Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55187 - in sandbox/SOC/2009/fusion: boost/fusion/algorithm/iteration boost/fusion/algorithm/iteration/detail boost/fusion/algorithm/query boost/fusion/algorithm/query/detail boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail boost/fusion/algorithm/transformation/detail/variadic_templates boost/fusion/container boost/fusion/container/detail boost/fusion/container/detail/pp boost/fusion/container/detail/variadic_templates boost/fusion/container/generation boost/fusion/container/generation/detail boost/fusion/container/generation/detail/pp boost/fusion/container/generation/detail/variadic_templates boost/fusion/container/list boost/fusion/container/list/detail/list boost/fusion/container/list/detail/list/pp boost/fusion/container/list/detail/list/variadic_templates boost/fusion/container/map boost/fusion/container/map/detail boost/fusion/container/map/detail/pp boost/fusion/container/map/detail/variadic_templates boost/fusion/container/set boost/fusion/container/set/detail boost/fusion/container/set/detail/pp boost/fusion/container/set/detail/variadic_templates boost/fusion/container/vector boost/fusion/container/vector/detail boost/fusion/container/vector/detail/pp boost/fusion/container/vector/detail/variadic_templates boost/fusion/functional/adapter/detail/decltype_and_variadic_templates boost/fusion/functional/generation/detail boost/fusion/functional/invocation/detail boost/fusion/sequence/intrinsic boost/fusion/support boost/fusion/support/detail boost/fusion/support/variadic_templates boost/fusion/support/variadic_templates/detail boost/fusion/tuple boost/fusion/tuple/detail/pp boost/fusion/tuple/detail/variadic_templates boost/fusion/view/detail boost/fusion/view/filter_view boost/fusion/view/iterator_range boost/fusion/view/joint_view boost/fusion/view/reverse_view boost/fusion/view/single_view boost/fusion/view/transform_view boost/fusion/view/transform_view/detail boost/fusion/view/zip_view boost/fusion/view/zip_view/detail libs/fusion/test libs/fusion/test/algorithm libs/fusion/test/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2009-07-30 14:42:58


Author: cschmidt
Date: 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
New Revision: 55187
URL: http://svn.boost.org/trac/boost/changeset/55187

Log:
bugfixes
Added:
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/make_tuple.hpp
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/apply_transform_result.hpp
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp | 17 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp | 25 ++++--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp | 24 ++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp | 16 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp | 16 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp | 17 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp | 13 ++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp | 20 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp | 10 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp | 20 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp | 28 ++++--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp | 11 ++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp | 9 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp | 94 +++++++++--------------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp | 44 +++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp | 19 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp | 12 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp | 84 ++++++++++++--------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp | 45 +++++++----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp | 18 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp | 17 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp | 21 ++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp | 26 ++++--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp | 28 +-----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp | 26 ++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp | 73 ++++++++++++------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp | 135 ++++++++++++++++-----------------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp | 141 ++++++++++++++++-------------------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 64 +++++++++-------
   sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp | 37 +-------
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp | 20 ++--
   sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp | 37 +-------
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp | 28 +++---
   sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp | 37 +-------
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp | 23 ++---
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp | 36 +-------
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp | 67 ++++++++++++----
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp | 136 +--------------------------------
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/decltype_and_variadic_templates/unfused_impl.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp | 28 +++++-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp | 9 ++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp | 9 ++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp | 15 +++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp | 9 ++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp | 8 ++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp | 10 +-
   sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp | 40 +++++++++
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp | 45 +++++------
   sandbox/SOC/2009/fusion/boost/fusion/support/ref.hpp | 38 +++++----
   sandbox/SOC/2009/fusion/boost/fusion/support/result_of.hpp | 48 +++++++++--
   sandbox/SOC/2009/fusion/boost/fusion/support/sequence_assign.hpp | 37 +--------
   sandbox/SOC/2009/fusion/boost/fusion/support/template.hpp | 50 +++++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp | 10 ++
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp | 10 ++
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_expand.hpp | 13 ---
   sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp | 13 +-
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp | 43 ++++++++--
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp | 16 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp | 43 +++++-----
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp | 15 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 26 ++++--
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp | 15 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 52 ++++++-------
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp | 27 ++----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp | 33 +++-----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp | 24 ++---
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp | 27 ++----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp | 63 +++++++++------
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp | 3
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp | 7 +
   sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile | 158 ++++++++++++++++++++--------------------
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp | 2
   104 files changed, 1474 insertions(+), 1220 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -25,19 +25,28 @@
 
     template <typename Seq, typename State, typename F>
     inline typename result_of::accumulate<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
       , BOOST_FUSION_R_ELSE_CLREF(State)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
>::type
- accumulate(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ accumulate(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return fusion::fold(
                 BOOST_FUSION_FORWARD(Seq,seq),
                 BOOST_FUSION_FORWARD(State,state),
                 BOOST_FUSION_FORWARD(F,f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::accumulate<Seq&, State const&, F const&>::type
+ accumulate(Seq& seq,State const& state,F const& f)
+ {
+ return fusion::fold(seq,state,f);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -33,7 +33,7 @@
         static Result
         call(It0 const& it0,
                 BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             typedef typename result_of::next<It0 const&>::type It1;
             It1 it1 = fusion::next(it0);
@@ -64,7 +64,7 @@
         static Result
         call(It0 const& it0,
                 BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             typedef typename result_of::next<It0 const&>::type It1;
             It1 it1 = fusion::next(it0);
@@ -89,7 +89,7 @@
         static Result
         call(It0 const& it0,
                 BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             return f(fusion::deref(fusion::next(it0)),
                     f(fusion::deref(it0),
@@ -104,7 +104,7 @@
         static Result
         call(It0 const& it0,
                 BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             return f(fusion::deref(it0), BOOST_FUSION_FORWARD(State,state));
         }
@@ -117,7 +117,7 @@
         static Result
         call(It0 const&,
                 BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F))
+ BOOST_FUSION_R_ELSE_CLREF(F))
         {
             return state;
         }
@@ -130,14 +130,23 @@
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
         typedef typename
- support::result_of<FRef(deref_type, StateRef)>::type
+ support::result_of<
+ typename support::get_func_base<FRef>::type
+ (deref_type, StateRef)
+ >::type
         type;
 #else
         typedef typename
             mpl::eval_if<
                 typename detail::is_lrref<deref_type>::type
- , support::result_of<FRef(deref_type, StateRef)>
- , support::result_of<FRef(deref_type&&, StateRef)>
+ , support::result_of<
+ typename support::get_func_base<FRef>::type
+ (deref_type, StateRef)
+ >
+ , support::result_of<
+ typename support::get_func_base<FRef>::type
+ (deref_type&&, StateRef)
+ >
>::type
         type;
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -24,7 +24,7 @@
     struct for_each_unrolled
     {
         template<typename It0, typename F>
- static void call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             typedef typename result_of::next<It0 const&>::type It1;
             It1 it1(fusion::next(it0));
@@ -48,7 +48,7 @@
     struct for_each_unrolled<3>
     {
         template<typename It0, typename F>
- static void call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             typedef typename result_of::next<It0 const&>::type It1;
             It1 it1(fusion::next(it0));
@@ -65,7 +65,7 @@
     struct for_each_unrolled<2>
     {
         template<typename It0, typename F>
- static void call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             typedef typename result_of::next<It0 const&>::type It1;
             It1 it1(fusion::next(it0));
@@ -79,7 +79,7 @@
     struct for_each_unrolled<1>
     {
         template<typename It0, typename F>
- static void call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             f(fusion::deref(it0));
         }
@@ -89,7 +89,7 @@
     struct for_each_unrolled<0>
     {
         template<typename It, typename F>
- static void call(It const&, BOOST_FUSION_R_ELSE_LREF(F))
+ static void call(It const&, BOOST_FUSION_R_ELSE_CLREF(F))
         {
         }
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -41,21 +41,33 @@
     template <typename Seq, typename State, typename F>
     inline typename
         result_of::fold<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
           , BOOST_FUSION_R_ELSE_CLREF(State)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
>::type
- fold(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ fold(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
          BOOST_FUSION_R_ELSE_CLREF(State) state,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return
             result_of::fold<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
               , BOOST_FUSION_R_ELSE_CLREF(State)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
>::gen::call(fusion::begin(seq), state, f);
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::fold<Seq&,State const&,F const&>::type
+ fold(Seq& seq,
+ State const& state,
+ F const& f)
+ {
+ return result_of::fold<Seq&,State const&,F const&>::gen::call(
+ fusion::begin(seq), state, f);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -29,14 +29,24 @@
 
     template <typename Seq, typename F>
     inline void
- for_each(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
- BOOST_FUSION_R_ELSE_LREF(F) f)
+ for_each(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         detail::for_each_unrolled<
- result_of::size<BOOST_FUSION_R_ELSE_LREF(Seq)>::value
+ result_of::size<BOOST_FUSION_R_ELSE_CLREF(Seq)>::value
>::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
                 BOOST_FUSION_FORWARD(F,f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline void
+ for_each(Seq& seq,F const& f)
+ {
+ detail::for_each_unrolled<result_of::size<Seq&>::value>::call(
+ fusion::begin(seq),f);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -28,15 +28,27 @@
 
     template <typename Seq, typename F>
     inline bool
- all(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
+ all(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return
             detail::unrolled_all<
- result_of::size<BOOST_FUSION_R_ELSE_LREF(Seq)>::value
+ result_of::size<BOOST_FUSION_R_ELSE_CLREF(Seq)>::value
>::call(
                     fusion::begin(BOOST_FUSION_FORWARD(Seq,seq))
                   , BOOST_FUSION_FORWARD(F,f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline bool
+ all(Seq& seq, F const& f)
+ {
+ return
+ detail::unrolled_all<
+ result_of::size<Seq const&>::value
+ >::call(fusion::begin(seq), f);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -28,7 +28,7 @@
 
             template<typename E>
             inline bool
- operator()(BOOST_FUSION_R_ELSE_LREF(E) e)
+ operator()(BOOST_FUSION_R_ELSE_CLREF(E) e)const
             {
                 return !f(BOOST_FUSION_FORWARD(E,e));
             }
@@ -48,12 +48,21 @@
 
     template <typename Seq, typename F>
     inline bool
- any(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
+ any(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
- return !all(
+ return !fusion::all(
                 BOOST_FUSION_FORWARD(Seq,seq),
- detail::any_helper<BOOST_FUSION_R_ELSE_LREF(F)>(f));
+ detail::any_helper<BOOST_FUSION_R_ELSE_CLREF(F)>(f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline bool
+ any(Seq& seq, F const& f)
+ {
+ return !fusion::all(seq,detail::any_helper<F const&>(f));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -27,12 +27,21 @@
 
     template <typename Seq, typename T>
     inline int
- count(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(T) x)
+ count(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
         return fusion::count_if(
                 BOOST_FUSION_FORWARD(Seq,seq),
- detail::count_helper<BOOST_FUSION_R_ELSE_LREF(T)>(x));
+ detail::count_helper<BOOST_FUSION_R_ELSE_CLREF(T)>(x));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline int
+ count(Seq& seq, T const& x)
+ {
+ return fusion::count_if(seq,detail::count_helper<T const&>(x));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -27,7 +27,7 @@
 
             template<typename E>
             inline int
- operator()(BOOST_FUSION_R_ELSE_LREF(E) e, int count)
+ operator()(BOOST_FUSION_R_ELSE_CLREF(E) e, int count)const
             {
                 return f(BOOST_FUSION_FORWARD(E,e)) ? ++count : count;
             }
@@ -47,13 +47,23 @@
 
     template <typename Seq, typename F>
     inline int
- count_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
+ count_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
- return fold(
- BOOST_FUSION_FORWARD(Seq,seq),
+ return fold(BOOST_FUSION_FORWARD(Seq,seq),
             0,
- detail::count_if_helper<BOOST_FUSION_R_ELSE_LREF(F)>(f));
+ detail::count_if_helper<BOOST_FUSION_R_ELSE_CLREF(F)>(f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline int
+ count_if(Seq& seq, F const& f)
+ {
+ return fold(seq,
+ 0,
+ detail::count_if_helper<F const&>(f));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -23,7 +23,7 @@
     {
         template <typename It0, typename F>
         static bool
- call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             if(!f(fusion::deref(it0)))
             {
@@ -62,7 +62,7 @@
     {
         template <typename It0, typename F>
         static bool
- call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             if(!f(fusion::deref(it0)))
             {
@@ -87,7 +87,7 @@
     {
         template <typename It0, typename F>
         static bool
- call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             if(!f(fusion::deref(it0)))
             {
@@ -105,7 +105,7 @@
     {
         template <typename It0, typename F>
         static bool
- call(It0 const& it0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
         {
             return f(fusion::deref(it0));
         }

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -21,7 +21,7 @@
     {
         template <typename T1, typename T2>
         static bool
- call(BOOST_FUSION_R_ELSE_LREF(T1) x, BOOST_FUSION_R_ELSE_LREF(T2) y)
+ call(BOOST_FUSION_R_ELSE_CLREF(T1) x, BOOST_FUSION_R_ELSE_CLREF(T2) y)
         {
             return BOOST_FUSION_FORWARD(T1,x) == BOOST_FUSION_FORWARD(T2,y);
         }
@@ -33,7 +33,7 @@
     {
         template <typename T1, typename T2>
         static bool
- call(BOOST_FUSION_R_ELSE_LREF(T1), BOOST_FUSION_R_ELSE_LREF(T2))
+ call(BOOST_FUSION_R_ELSE_CLREF(T1), BOOST_FUSION_R_ELSE_CLREF(T2))
         {
             return false;
         }
@@ -48,10 +48,14 @@
 
         template <typename T2>
         bool
- operator()(BOOST_FUSION_R_ELSE_LREF(T2) y)
+ operator()(BOOST_FUSION_R_ELSE_CLREF(T2) y)const
         {
             typedef typename remove_reference<T1Ref>::type T1_nonref;
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef T2 T2_nonref;
+#else
             typedef typename remove_reference<T2>::type T2_nonref;
+#endif
 
             typedef
                 compare_convertible<

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -212,8 +212,10 @@
             static type
             call(It const& it)
             {
- typedef typename result_of::distance<It, type>::type N;
- return fusion::advance<N>(it);
+ return
+ fusion::advance<
+ typename result_of::distance<It, type>::type
+ >(it);
             }
         };
 
@@ -223,11 +225,10 @@
         {
             template <typename Seq>
             static typename static_find_if<First, Last, Pred>::type
- call(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ call(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
             {
- typedef static_find_if<First, Last, Pred> gen;
-
- return gen::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ return static_find_if<First, Last, Pred>::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
             }
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -24,8 +24,7 @@
         template<
             typename Seq
           , typename T
- , bool is_associative_sequence=
- traits::is_associative<Seq>::value
+ , bool is_associative_sequence=traits::is_associative<Seq>::value
>
         struct find;
 
@@ -59,12 +58,21 @@
         result_of::find<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type const
     find(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- typedef typename
- result_of::find<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::filter
- gen;
+ return
+ result_of::find<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , T
+ >::filter::call(seq);
+ }
 
- return gen::call(seq);
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline typename result_of::find<Seq&, T>::type const
+ find(Seq& seq)
+ {
+ return result_of::find<Seq&, T>::filter::call(seq);
     }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -21,13 +21,15 @@
         template <typename Seq, typename Pred>
         struct find_if
         {
- typedef typename
+ typedef
                 detail::static_find_if<
                     typename result_of::begin<Seq>::type
                   , typename result_of::end<Seq>::type
                   , Pred
- >::type
- type;
+ >
+ gen;
+
+ typedef typename gen::type type;
         };
     }
 
@@ -36,16 +38,20 @@
         result_of::find_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
     find_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- typedef
- detail::static_find_if<
- typename result_of::begin<Seq>::type
- , typename result_of::end<Seq>::type
- , Pred
- >
- gen;
+ return
+ result_of::find_if<
+ BOOST_FUSION_R_ELSE_CLREF(Seq), Pred
+ >::gen::call(fusion::begin(seq));
+ }
 
- return gen::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline typename result_of::find_if<Seq&, Pred>::type
+ find_if(Seq& seq)
+ {
+ return result_of::find_if<Seq&, Pred>::gen::call(fusion::begin(seq));
     }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -24,12 +24,21 @@
 
     template <typename Seq, typename F>
     inline bool
- none(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
+ none(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return !fusion::any(
                 BOOST_FUSION_FORWARD(Seq,seq),
                 BOOST_FUSION_FORWARD(F,f));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline bool
+ none(Seq& seq, F const& f)
+ {
+ return !fusion::any(seq,f);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -23,7 +23,7 @@
         struct clear
         {
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef vector0 type;
+ typedef vector0<> type;
 #else
             typedef vector<> type;
 #endif
@@ -31,10 +31,11 @@
     }
 
     template <typename Seq>
- inline typename result_of::clear<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
- clear(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::clear<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ clear(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- return typename result_of::clear<BOOST_FUSION_R_ELSE_LREF(Seq)>::type();
+ return typename
+ result_of::clear<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type();
     }
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -10,41 +10,15 @@
 
 #include <boost/fusion/support/result_of.hpp>
 
+#include <boost/mpl/bool.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/type_traits/is_convertible.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
     //TODO cschmidt: update doc. according to real behavior!
- template <bool is_convertible>
- struct replacer_if_helper;
-
- template <>
- struct replacer_if_helper<false>
- {
- template <typename U, typename F, typename NewValue>
- static BOOST_FUSION_R_ELSE_LREF(U)
- call(BOOST_FUSION_R_ELSE_LREF(U) x,
- BOOST_FUSION_R_ELSE_LREF(F),
- BOOST_FUSION_R_ELSE_LREF(NewValue))
- {
- return x;
- }
- };
-
- template <>
- struct replacer_if_helper<true>
- {
- template <typename U, typename F, typename NewValue>
- static typename remove_reference<U>::type
- call(BOOST_FUSION_R_ELSE_LREF(U) x,
- BOOST_FUSION_R_ELSE_LREF(F) f,
- BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
- {
- return f(BOOST_FUSION_FORWARD(U,x)) ? new_value : x;
- }
- };
-
+ //TODO cschmidt: conv based on ptrs?!
+ //TODO const?!
     template <typename F, typename NewValue>
     struct replace_if_helper
     {
@@ -54,35 +28,30 @@
         template<typename Self, typename U>
         struct result<Self(U)>
         {
+ typedef typename detail::identity<U>::type u;
+
             typedef typename
- mpl::if_<
- is_convertible<
- NewValue
- , typename remove_reference<U>::type
- >
- , NewValue
- , U
- >::type
+ mpl::if_<is_convertible<NewValue, u>, u, U>::type
             type;
         };
 
         template<typename OtherF, typename OtherNewValue>
         replace_if_helper(
- BOOST_FUSION_R_ELSE_LREF(OtherF) other_f,
- BOOST_FUSION_R_ELSE_LREF(OtherNewValue) other_new_value)
- : f(BOOST_FUSION_FORWARD(OtherF,other_f))
- , new_value(BOOST_FUSION_FORWARD(OtherNewValue,other_new_value))
+ BOOST_FUSION_R_ELSE_CLREF(OtherF) f,
+ BOOST_FUSION_R_ELSE_CLREF(OtherNewValue) new_value)
+ : f(BOOST_FUSION_FORWARD(OtherF,f))
+ , new_value(BOOST_FUSION_FORWARD(OtherNewValue,new_value))
         {}
 
         template<typename Replacer>
- replace_if_helper(BOOST_FUSION_R_ELSE_LREF(Replacer) replacer)
+ replace_if_helper(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
           : f(BOOST_FUSION_FORWARD(Replacer,replacer).f)
           , new_value(BOOST_FUSION_FORWARD(Replacer,replacer).new_value)
         {}
 
         template<typename Replacer>
         replace_if_helper&
- operator=(BOOST_FUSION_R_ELSE_LREF(Replacer) replacer)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
         {
             f=BOOST_FUSION_FORWARD(Replacer,replacer).f;
             new_value=BOOST_FUSION_FORWARD(Replacer,replacer).new_value;
@@ -90,22 +59,33 @@
         }
 
         template <typename U>
- typename result<replace_if_helper(U)>::type
+ BOOST_FUSION_R_ELSE_LREF(U)
+ call_impl(BOOST_FUSION_R_ELSE_LREF(U) x, mpl::false_) const
+ {
+ return x;
+ }
+
+ template <typename U>
+ typename result<replace_if_helper(BOOST_FUSION_R_ELSE_LREF(U))>::type
+ call_impl(BOOST_FUSION_R_ELSE_LREF(U) x, mpl::true_) const
+ {
+ return f(BOOST_FUSION_FORWARD(U,x)) ? new_value : x;
+ }
+
+ template <typename U>
+ typename result<replace_if_helper(BOOST_FUSION_R_ELSE_LREF(U))>::type
         operator()(BOOST_FUSION_R_ELSE_LREF(U) x) const
         {
- typedef
- replacer_if_helper<
- is_convertible<
- NewValue
- , typename remove_reference<U>::type
- >::value
- >
- gen;
-
- return gen::call(
- BOOST_FUSION_FORWARD(U, x),
- f,
- new_value);
+ return call_impl(
+ BOOST_FUSION_FORWARD(U, x),
+ typename is_convertible<
+ NewValue
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ , U
+#else
+ , typename detail::remove_reference<U>::type
+#endif
+ >::type());
         }
 
         F f;

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -27,11 +27,11 @@
     }
 
     template<typename... Seqs>
- inline typename result_of::zip<BOOST_FUSION_R_ELSE_LREF(Seqs)...>::type
- zip(BOOST_FUSION_R_ELSE_LREF(Seqs)... seqs)
+ inline typename result_of::zip<BOOST_FUSION_R_ELSE_CLREF(Seqs)...>::type
+ zip(BOOST_FUSION_R_ELSE_CLREF(Seqs)... seqs)
     {
         return typename
- result_of::zip<BOOST_FUSION_R_ELSE_LREF(Seqs)...>::type(
+ result_of::zip<BOOST_FUSION_R_ELSE_CLREF(Seqs)...>::type(
                     vector_tie(seqs...));
     }
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -98,17 +98,17 @@
 
     template <typename Seq, typename First, typename Last>
     typename result_of::erase<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
       , First const&
       , Last const&
>::type
- erase(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             First const& first,
             Last const& last)
     {
         typedef
             result_of::erase<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
               , First const&
               , Last const&
>
@@ -129,17 +129,49 @@
     }
 
     template <typename Seq, typename First>
- typename result_of::erase<BOOST_FUSION_R_ELSE_LREF(Seq), First const&>::type
- erase(BOOST_FUSION_R_ELSE_LREF(Seq) seq, First const& first)
+ typename result_of::erase<BOOST_FUSION_R_ELSE_CLREF(Seq), First const&>::type
+ erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, First const& first)
     {
         return erase(
                 BOOST_FUSION_FORWARD(Seq,seq)
               , first
               , detail::compute_erase_last<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
                   , First const&
>::call(first));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename First, typename Last>
+ typename result_of::erase<Seq&, First const&, Last const&>::type
+ erase(Seq& seq,First const& first,Last const& last)
+ {
+ typedef result_of::erase<Seq&, First const&, Last const&> result;
+ typedef typename result::left_type left_type;
+ typedef typename result::right_type right_type;
+ typedef typename result::type result_type;
+
+ return result_type(
+ left_type(
+ fusion::begin(seq)
+ , first
+ )
+ , right_type(
+ last
+ , fusion::end(seq)
+ ));
+ }
+
+ template <typename Seq, typename First>
+ typename result_of::erase<Seq&, First const&>::type
+ erase(Seq& seq, First const& first)
+ {
+ return erase(
+ seq
+ , first
+ , detail::compute_erase_last<Seq&, First const&>::call(first));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -37,13 +37,24 @@
 
     template <typename Key, typename Seq>
     inline typename
- result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key>::type
- erase_key(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ result_of::erase_key<BOOST_FUSION_R_ELSE_CLREF(Seq), Key>::type
+ erase_key(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- typedef result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key> result;
+ return erase(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ result_of::erase_key<
+ BOOST_FUSION_R_ELSE_CLREF(Seq), Key
+ >::gen::call(seq));
+ }
 
- return erase(BOOST_FUSION_FORWARD(Seq,seq), result::gen::call(seq));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Key, typename Seq>
+ inline typename result_of::erase_key<Seq&, Key>::type
+ erase_key(Seq& seq)
+ {
+ return erase(seq,result_of::erase_key<Seq, Key>::gen::call(seq));
     }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -27,13 +27,22 @@
     }
 
     template <typename T, typename Seq>
- inline typename result_of::filter<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type
- filter(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::filter<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type
+ filter(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
- result_of::filter<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type(
+ result_of::filter<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type(
                 BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline typename result_of::filter<Seq&, T>::type
+ filter(Seq& seq)
+ {
+ return typename result_of::filter<Seq&, T>::type(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -23,13 +23,22 @@
     
     template <typename Pred, typename Seq>
     inline typename
- result_of::filter_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type
- filter_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ result_of::filter_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
+ filter_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
- result_of::filter_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type(
+ result_of::filter_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type(
                 BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline typename result_of::filter_if<Seq&, Pred>::type
+ filter_if(Seq& seq)
+ {
+ return typename result_of::filter_if<Seq&, Pred>::type(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -30,18 +30,18 @@
     template <typename Seq, typename Pos, typename T>
     inline typename
         result_of::insert<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
           , Pos const&
- , BOOST_FUSION_R_ELSE_LREF(T)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
>::type
- insert(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ insert(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             Pos const& pos,
- BOOST_FUSION_R_ELSE_LREF(T) x)
+ BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
         return insert_range(
                   BOOST_FUSION_FORWARD(Seq,seq)
                 , pos
- , make_single_view(BOOST_FUSION_FORWARD(T,x)));
+ , fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)));
     }
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
@@ -49,7 +49,7 @@
     inline typename result_of::insert<Seq&, Pos const&, T const&>::type
     insert(Seq& seq,Pos const& pos,T const& x)
     {
- return insert_range(seq, pos, make_single_view(x));
+ return insert_range(seq, pos, fusion::make_single_view(x));
     }
 #endif
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -15,6 +15,8 @@
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/support/ref.hpp>
 
+#include <boost/preprocessor/empty.hpp>
+
 namespace boost { namespace fusion
 {
     namespace result_of
@@ -45,42 +47,54 @@
         };
     }
 
- template <typename Seq, typename Pos, typename Range>
- inline typename
- result_of::insert_range<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , Pos const&
- , BOOST_FUSION_R_ELSE_LREF(Range)
- >::type
- insert_range(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
- Pos const& pos,
- BOOST_FUSION_R_ELSE_LREF(Range) range)
- {
- typedef
- result_of::insert_range<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , Pos const&
- , BOOST_FUSION_R_ELSE_LREF(Range)
- >
- result;
- typedef typename result::left_type left_type;
- typedef typename result::right_type right_type;
- typedef typename result::left_insert_type left_insert_type;
-
- return typename result::type(
- left_insert_type(
- left_type(
- fusion::begin(seq),
- pos
- ),
- BOOST_FUSION_FORWARD(Range,range)
- ),
- right_type(
- pos,
- fusion::end(seq)
- )
- );
+#define BOOST_FUSION_INSERT_RANGE(SEQ_CV_REF_MODIFIER,RANGE_CV_REF_MODIFIER)\
+ template <typename Seq, typename Pos, typename Range>\
+ inline typename\
+ result_of::insert_range<\
+ Seq SEQ_CV_REF_MODIFIER\
+ , Pos const&\
+ , Range RANGE_CV_REF_MODIFIER\
+ >::type\
+ insert_range(Seq SEQ_CV_REF_MODIFIER seq,\
+ Pos const& pos,\
+ Range RANGE_CV_REF_MODIFIER range)\
+ {\
+ typedef\
+ result_of::insert_range<\
+ Seq SEQ_CV_REF_MODIFIER\
+ , Pos const&\
+ , Range RANGE_CV_REF_MODIFIER\
+ >\
+ result;\
+ typedef typename result::left_type left_type;\
+ typedef typename result::right_type right_type;\
+ typedef typename result::left_insert_type left_insert_type;\
+ \
+ return typename result::type(\
+ left_insert_type(\
+ left_type(\
+ fusion::begin(seq),\
+ pos\
+ ),\
+ BOOST_FUSION_FORWARD(Range RANGE_CV_REF_MODIFIER,range)\
+ ),\
+ right_type(\
+ pos,\
+ fusion::end(seq)\
+ )\
+ );\
     }
+
+ BOOST_FUSION_INSERT_RANGE(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_INSERT_RANGE(&,const&);
+ BOOST_FUSION_INSERT_RANGE(const&,&);
+ BOOST_FUSION_INSERT_RANGE(&,&);
+#endif
+
+#undef BOOST_FUSION_INSERT_RANGE
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -11,6 +11,8 @@
 
 #include <boost/fusion/view/joint_view.hpp>
 
+#include <boost/preprocessor/empty.hpp>
+
 namespace boost { namespace fusion {
 
     namespace result_of
@@ -22,23 +24,34 @@
         };
     }
 
- template<typename Lhs, typename Rhs>
- inline typename
- result_of::join<
- BOOST_FUSION_R_ELSE_LREF(Lhs)
- , BOOST_FUSION_R_ELSE_LREF(Rhs)
- >::type
- join(BOOST_FUSION_R_ELSE_LREF(Lhs) lhs,
- BOOST_FUSION_R_ELSE_LREF(Rhs) rhs)
- {
- return typename
- result_of::join<
- BOOST_FUSION_R_ELSE_LREF(Lhs)
- , BOOST_FUSION_R_ELSE_LREF(Rhs)
- >::type(
- BOOST_FUSION_FORWARD(Lhs,lhs)
- , BOOST_FUSION_FORWARD(Rhs,rhs));
+#define BOOST_FUSION_JOIN(LHS_CV_REF_MODIFIER,RHS_CV_REF_MODIFIER)\
+ template<typename Lhs, typename Rhs>\
+ inline typename\
+ result_of::join<\
+ Lhs LHS_CV_REF_MODIFIER\
+ , Rhs RHS_CV_REF_MODIFIER\
+ >::type\
+ join(Lhs LHS_CV_REF_MODIFIER lhs,\
+ Rhs RHS_CV_REF_MODIFIER rhs)\
+ {\
+ return typename\
+ result_of::join<\
+ Lhs LHS_CV_REF_MODIFIER\
+ , Rhs RHS_CV_REF_MODIFIER\
+ >::type(BOOST_FUSION_FORWARD(Lhs LHS_CV_REF_MODIFIER,lhs)\
+ , BOOST_FUSION_FORWARD(Rhs RHS_CV_REF_MODIFIER,rhs));\
     }
+
+ BOOST_FUSION_JOIN(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_JOIN(&,const&);
+ BOOST_FUSION_JOIN(const&,&);
+ BOOST_FUSION_JOIN(&,&);
+#endif
+
+#undef BOOST_FUSION_JOIN
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -30,14 +30,26 @@
     }
 
     template <typename Seq>
- inline typename result_of::pop_back<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
- pop_back(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::pop_back<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ pop_back(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
- result_of::pop_back<BOOST_FUSION_R_ELSE_LREF(Seq)>::type(
+ result_of::pop_back<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type(
                     fusion::begin(seq)
                   , fusion::prior(fusion::end(seq)));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::pop_back<Seq&>::type
+ pop_back(Seq& seq)
+ {
+ return typename
+ result_of::pop_back<Seq&>::type(
+ fusion::begin(seq)
+ , fusion::prior(fusion::end(seq)));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -30,14 +30,25 @@
     }
 
     template <typename Seq>
- inline typename result_of::pop_front<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
- pop_front(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::pop_front<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ pop_front(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
             result_of::pop_front<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
>::type(fusion::next(fusion::begin(seq)), fusion::end(seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::pop_front<Seq&>::type
+ pop_front(Seq& seq)
+ {
+ return typename
+ result_of::pop_front<Seq&>::type(
+ fusion::next(fusion::begin(seq)), fusion::end(seq));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,9 +8,9 @@
 #ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
 #define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
 
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
 #include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
 
 namespace boost { namespace fusion
 {
@@ -31,17 +31,28 @@
     template <typename Seq, typename T>
     inline typename
         result_of::push_back<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
           , BOOST_FUSION_R_ELSE_CLREF(T)
>::type
- push_back(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
+ push_back(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
         return typename
             result_of::push_back<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
               , BOOST_FUSION_R_ELSE_CLREF(T)
- >::type(BOOST_FUSION_FORWARD(Seq,seq), BOOST_FUSION_FORWARD(T,x));
+ >::type(BOOST_FUSION_FORWARD(Seq,seq),
+ fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline typename result_of::push_back<Seq&, T const&>::type
+ push_back(Seq& seq, T const& x)
+ {
+ return typename result_of::push_back<Seq&, T const&>::type(
+ seq,fusion::make_single_view(x));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,9 +8,9 @@
 #ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
 #define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
 
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
 #include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
 
 namespace boost { namespace fusion
 {
@@ -21,9 +21,7 @@
         {
             typedef
                 joint_view<
- fusion::single_view<
- typename detail::as_fusion_element<T>::type
- >
+ single_view<typename detail::as_fusion_element<T>::type>
                   , Seq
>
             type;
@@ -33,19 +31,31 @@
     template <typename Seq, typename T>
     inline typename
         result_of::push_front<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
           , BOOST_FUSION_R_ELSE_CLREF(T)
>::type
     push_front(
- BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
         return typename
             result_of::push_front<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
               , BOOST_FUSION_R_ELSE_CLREF(T)
- >::type(BOOST_FUSION_FORWARD(T,x), BOOST_FUSION_FORWARD(Seq,seq));
+ >::type(fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)),
+ BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline typename result_of::push_front<Seq&, T const&>::type
+ push_front(Seq& seq, T const& x)
+ {
+ return typename result_of::push_front<Seq&, T const&>::type(
+ fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)),
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -28,13 +28,22 @@
     }
 
     template <typename T, typename Seq>
- inline typename result_of::remove<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type
- remove(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::remove<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type
+ remove(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
- result_of::remove<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type(
+ result_of::remove<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type(
                 BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline typename result_of::remove<Seq&, T>::type
+ remove_if(Seq& seq)
+ {
+ return typename result_of::remove<Seq&, T>::type(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -26,13 +26,22 @@
 
     template <typename Pred, typename Seq>
     inline typename
- result_of::remove_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type
- remove_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ result_of::remove_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
+ remove_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return typename
- result_of::remove_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type(
+ result_of::remove_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type(
                 BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline typename result_of::remove_if<Seq&, Pred>::type
+ remove_if(Seq& seq)
+ {
+ return typename result_of::remove_if<Seq&, Pred>::type(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -21,19 +21,19 @@
         {
             template <typename OtherOldValue>
             replace_helper(
- BOOST_FUSION_R_ELSE_LREF(OtherOldValue) old_value
+ BOOST_FUSION_R_ELSE_CLREF(OtherOldValue) old_value
                   , int)
               : old_value(BOOST_FUSION_FORWARD(OtherOldValue,old_value))
             {}
 
             template<typename Replacer>
- replace_helper(BOOST_FUSION_R_ELSE_LREF(Replacer) replacer)
+ replace_helper(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
               : old_value(BOOST_FUSION_FORWARD(Replacer,replacer).old_value)
             {}
 
             template<typename Replacer>
             replace_helper&
- operator=(BOOST_FUSION_R_ELSE_LREF(Replacer) replacer)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
             {
                 old_value=BOOST_FUSION_FORWARD(Replacer,replacer).old_value;
                 return *this;
@@ -41,7 +41,7 @@
 
             template <typename U>
             bool
- operator()(BOOST_FUSION_R_ELSE_LREF(U) x) const
+ operator()(BOOST_FUSION_R_ELSE_CLREF(U) x) const
             {
                 return x==old_value;
             }
@@ -70,17 +70,17 @@
     template <typename Seq, typename OldValue, typename NewValue>
     inline typename
         result_of::replace<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
           , BOOST_FUSION_R_ELSE_CLREF(OldValue)
           , BOOST_FUSION_R_ELSE_CLREF(NewValue)
>::type
- replace(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ replace(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             BOOST_FUSION_R_ELSE_CLREF(OldValue) old_value,
             BOOST_FUSION_R_ELSE_CLREF(NewValue) new_value)
     {
         typedef typename
             result_of::replace<
- BOOST_FUSION_R_ELSE_LREF(Seq)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
               , BOOST_FUSION_R_ELSE_CLREF(OldValue)
               , BOOST_FUSION_R_ELSE_CLREF(NewValue)
>::replacer
@@ -91,20 +91,6 @@
                   , replacer(BOOST_FUSION_FORWARD(OldValue,old_value),0)
                   , BOOST_FUSION_FORWARD(NewValue,new_value));
     }
-
-#ifdef BOOST_NO_RVALUE_REFERENCES
- template <typename Seq, typename OldValue, typename NewValue>
- inline typename
- result_of::replace<Seq&, OldValue const&, NewValue const&>::type
- replace(Seq& seq,OldValue const& old_value,NewValue const& new_value)
- {
- typedef typename
- result_of::replace<Seq&, OldValue const&, NewValue const&>::replacer
- replacer;
-
- return replace_if(seq, replacer(old_value,0), new_value);
- }
-#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -33,18 +33,18 @@
 
     template <typename Seq, typename F, typename NewValue>
     inline typename result_of::replace_if<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
       , BOOST_FUSION_R_ELSE_CLREF(NewValue)
>::type
- replace_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
- BOOST_FUSION_R_ELSE_LREF(F) pred,
+ replace_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(F) pred,
             BOOST_FUSION_R_ELSE_CLREF(NewValue) new_value)
     {
- typedef typename
+ typedef
             result_of::replace_if<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
               , BOOST_FUSION_R_ELSE_CLREF(NewValue)
>
         result;
@@ -54,6 +54,18 @@
                     BOOST_FUSION_FORWARD(F,pred),
                     BOOST_FUSION_FORWARD(NewValue,new_value)));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F, typename NewValue>
+ inline typename result_of::replace_if<Seq&, F const&, NewValue const&>::type
+ replace_if(Seq& seq,F const& pred,NewValue const& new_value)
+ {
+ typedef result_of::replace_if<Seq&, F const&, NewValue const&> result;
+
+ return typename result::type(seq,
+ typename result::replacer(pred,new_value));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -22,12 +22,21 @@
     }
 
     template <typename Seq>
- inline typename result_of::reverse<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
- reverse(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::reverse<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ reverse(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- return typename result_of::reverse<BOOST_FUSION_R_ELSE_LREF(Seq)>::type(
+ return typename result_of::reverse<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type(
                 BOOST_FUSION_FORWARD(Seq,seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::reverse<Seq&>::type
+ reverse(Seq& seq)
+ {
+ return typename result_of::reverse<Seq&>::type(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -10,6 +10,8 @@
 
 #include <boost/fusion/view/transform_view/transform_view.hpp>
 
+#include <boost/preprocessor/empty.hpp>
+
 namespace boost { namespace fusion
 {
     struct void_;
@@ -36,40 +38,61 @@
     template <typename Seq, typename F>
     inline typename
         result_of::transform<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
>::type
- transform(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
+ transform(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return typename
             result_of::transform<
- BOOST_FUSION_R_ELSE_LREF(Seq)
- , BOOST_FUSION_R_ELSE_LREF(F)
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
>::type(BOOST_FUSION_FORWARD(Seq,seq), BOOST_FUSION_FORWARD(F,f));
     }
 
- template <typename Seq1, typename Seq2, typename F>
- inline typename
- result_of::transform<
- BOOST_FUSION_R_ELSE_LREF(Seq1)
- , BOOST_FUSION_R_ELSE_LREF(Seq2)
- , BOOST_FUSION_R_ELSE_LREF(F)
- >::type
- transform(
- BOOST_FUSION_R_ELSE_LREF(Seq1) seq1
- , BOOST_FUSION_R_ELSE_LREF(Seq2) seq2
- , BOOST_FUSION_R_ELSE_LREF(F) f)
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::transform<Seq&, F const&>::type
+ transform(Seq& seq, F const& f)
     {
- return typename
- result_of::transform<
- BOOST_FUSION_R_ELSE_LREF(Seq1)
- , BOOST_FUSION_R_ELSE_LREF(Seq2)
- , BOOST_FUSION_R_ELSE_LREF(F)
- >::type(
- BOOST_FUSION_FORWARD(Seq1,seq1)
- , BOOST_FUSION_FORWARD(Seq2,seq2)
- , BOOST_FUSION_FORWARD(F,f));
+ return typename result_of::transform<Seq&, F const&>::type(seq, f);
     }
+#endif
+
+#define BOOST_FUSION_TRANSFORM_BINARY(SEQ1_CV_REF_MODIFIER,SEQ2_CV_REF_MODIFIER)\
+ template <typename Seq1, typename Seq2, typename F>\
+ inline typename\
+ result_of::transform<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ , BOOST_FUSION_R_ELSE_CLREF(F)\
+ >::type\
+ transform(\
+ Seq1 SEQ1_CV_REF_MODIFIER seq1\
+ , Seq2 SEQ2_CV_REF_MODIFIER seq2\
+ , BOOST_FUSION_R_ELSE_CLREF(F) f)\
+ {\
+ return typename\
+ result_of::transform<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ , BOOST_FUSION_R_ELSE_CLREF(F)\
+ >::type(\
+ BOOST_FUSION_FORWARD(Seq1 SEQ1_CV_REF_MODIFIER,seq1)\
+ , BOOST_FUSION_FORWARD(Seq2 SEQ2_CV_REF_MODIFIER,seq2)\
+ , BOOST_FUSION_FORWARD(F,f));\
+ }
+
+ BOOST_FUSION_TRANSFORM_BINARY(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_TRANSFORM_BINARY(&,const&);
+ BOOST_FUSION_TRANSFORM_BINARY(const&,&);
+ BOOST_FUSION_TRANSFORM_BINARY(&,&);
+#endif
+
+#undef BOOST_FUSION_TRANSFORM_BINARY
 }}
 
 #endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,91 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
+#include <boost/fusion/support/ref.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/as_seq.hpp>
+#else
+
+# include <boost/fusion/container/detail/variadic_templates/as_seq.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tag)>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ result_of::size<SeqRef>::value
+ >
+ gen;
+ typedef typename
+ gen::template apply<
+ typename result_of::begin<SeqRef>::type
+ >::type
+ type;
+#else
+ typedef typename
+ detail::detail::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ SeqRef
+ >
+ gen;
+ typedef typename gen::apply::type type;
+#endif
+
+ static type call(SeqRef seq)
+ {
+ return type(fusion::sequence_assign(
+ BOOST_FUSION_FORWARD(SeqRef,seq)));
+ }
+ };
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)
+ {
+ typedef typename
+ extension::convert_impl<
+ BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tag)
+ >::template apply<typename detail::add_lref<Seq>::type>
+ gen;
+
+ typedef typename gen::apply::type type;
+ };
+ }
+
+ template <typename Seq>
+ inline typename
+ result_of::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ >::type
+ BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return
+ result_of::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ >::gen::call(seq);
+ }
+
+}}

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,60 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_PP_IS_ITERATING
+
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/dec.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int Size>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/detail/pp/as_seq.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+}}}
+
+#else
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<N>
+ {
+ template <typename It0>
+ struct apply
+ {
+#if N
+ typedef typename result_of::value_of<It0>::type T0;
+#endif
+
+#define BOOST_FUSION_IT_VALUE_ENUM(Z, N, _)\
+ typedef typename\
+ result_of::next<BOOST_PP_CAT(It, BOOST_PP_DEC(N))>::type\
+ BOOST_PP_CAT(It, N);\
+ typedef typename\
+ result_of::value_of<BOOST_PP_CAT(It, N)>::type\
+ BOOST_PP_CAT(T, N);
+
+ BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_FUSION_IT_VALUE_ENUM, _)
+
+#undef BOOST_FUSION_IT_VALUE_ENUM
+
+ typedef BOOST_FUSION_SEQ_NAME<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+ };
+
+#undef N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,62 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_PP_IS_ITERATING
+# ifndef BOOST_FUSION_SEQ_NAME
+# ifndef BOOST_FUSION_CONTAINER_DETAIL_PP_FORWARD_CTOR_HPP
+# include <boost/fusion/support/template.hpp>
+
+# include <boost/config.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+# endif
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# define BOOST_PP_ITERATION_LIMITS (1, BOOST_FUSION_MAX_SEQ_SIZE)
+# include BOOST_PP_ITERATE()
+
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ template<typename SeqAssign>
+ BOOST_FUSION_SEQ_NAME(SeqAssign const& seq_assign)
+# ifdef BOOST_FUSION_USE_BASE_TYPE
+ : base_type(seq_assign)
+# else
+ : data(seq_assign)
+# endif
+ {}
+# endif
+# endif
+
+#else
+
+# define N BOOST_PP_ITERATION()
+
+# ifndef BOOST_NO_RVALUE_REFERENCES
+ VARIADIC_TEMPLATE_A(N)
+# endif
+# if N == 1
+ explicit
+# endif
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_SEQ_NAME(EXPAND_TEMPLATE_ARGUMENTS_CALL_PARAMS(N))
+# ifdef BOOST_FUSION_USE_BASE_TYPE
+ : base_type(EXPAND_PARAMETERS(N))
+# else
+ : data(EXPAND_PARAMETERS(N))
+# endif
+ {}
+# else
+ BOOST_FUSION_SEQ_NAME(EXPAND_TEMPLATE_ARGUMENTS_A(N))
+# ifdef BOOST_FUSION_USE_BASE_TYPE
+ : base_type(EXPAND_PARAMETERS_A(N))
+# else
+ : data(EXPAND_PARAMETERS_A(N))
+# endif
+ {}
+# endif
+
+# undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,31 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename SeqRef>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)
+ {
+ struct apply
+ {
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<BOOST_FUSION_SEQ_NAME> >
+ , typename detail::to_random_access_mpl_seq<
+ typename detail::remove_reference<SeqRef>::type
+ >::type
+ >::type
+ type;
+ };
+ };
+}}}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,7 +8,6 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_HPP
 
-//TODO move ignore.hpp in the _tie-headers?
 #include <boost/fusion/container/generation/ignore.hpp>
 #include <boost/fusion/container/generation/cons_tie.hpp>
 #include <boost/fusion/container/generation/list_tie.hpp>

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,12 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_seq.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp>
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,79 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_LIST_TIE_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_LIST_TIE_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/list/list.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct list_tie;
- }
-
-// $$$ shouldn't we remove_reference first to allow references? $$$
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/list_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct list_tie<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,91 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_LIST_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_LIST_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/list/list.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_list;
-
- template <>
- struct make_list<>
- {
- typedef list<> type;
- };
- }
-
- inline list<>
- make_list()
- {
- return list<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_list.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_list<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -1,106 +1,99 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+// Copyright Christopher Schmidt 2009.
+// 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)
 
- 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 BOOST_PP_IS_ITERATING
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
 
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
 #include <boost/fusion/container/map/map.hpp>
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/support/pair.hpp>
 
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/mul.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
 namespace boost { namespace fusion
 {
- struct void_;
-
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename D, void_)
- , typename Extra = void_
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2))
         struct make_map;
-
- template <>
- struct make_map<>
- {
- typedef map<> type;
- };
     }
     
- inline map<>
- make_map()
- {
- return map<>();
- }
-
-#define BOOST_FUSION_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
- fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
 #include BOOST_PP_ITERATE()
 
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
 }}
 
 #endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
+#else
 
 #define N BOOST_PP_ITERATION()
 
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
-#endif
+ VARIADIC_TEMPLATE(BOOST_PP_MUL(N,2))
+ struct make_map
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2),
+ BOOST_PP_MUL(N,2))
         {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
+#define BOOST_FUSION_MAP_ELEMENT(Z,INNER_N,_)\
+ pair<\
+ BOOST_PP_CAT(T,INNER_N),\
+ typename detail::as_fusion_element<\
+ BOOST_PP_CAT(T,BOOST_PP_ADD(N,INNER_N))\
+ >::type\
+ >
+
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_MAP_ELEMENT, _)> type;
+
+#undef BOOST_FUSION_MAP_ELEMENT
         };
     }
 
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
- make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
+#define BOOST_FUSION_MAKE_MAP_ARGS2(Z,INNER_N,_)\
+ BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY())
+
+ VARIADIC_TEMPLATE_A(BOOST_PP_MUL(N,2))
+ inline
+#if N
+ typename
+#endif
+ result_of::make_map<
+ BOOST_PP_ENUM_PARAMS(N, A)
+ , BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_MAP_ARGS2, _)
+ >::type
+
+#define BOOST_FUSION_MAKE_MAP_ARGUMENTS(Z,INNER_N,__)\
+ BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY())\
+ BOOST_PP_CAT(_,INNER_N)
+
+ make_map(BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_MAP_ARGUMENTS, _))
+
+#undef BOOST_FUSION_MAKE_MAP_ARGUMENTS
     {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
+ return
+#if N
+ typename
+#endif
+ result_of::make_map<
+ BOOST_PP_ENUM_PARAMS(N, A)
+ , BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_MAP_ARGS2, _)
+ >::type(EXPAND_PARAMETERS_A(N));
     }
 
+#undef BOOST_FUSION_MAKE_MAP_ARGS2
+
 #undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,71 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_PP_IS_ITERATING
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_FUSION_MAX_SEQ_SIZE)
+ struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME);
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/make_seq.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#else
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE(N)
+ struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_FUSION_MAX_SEQ_SIZE,N)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_BINARY(
+ N,
+ typename detail::as_fusion_element<,
+ >::type
+ )
+ >
+ type;
+ };
+ }
+
+ VARIADIC_TEMPLATE_A(N)
+ inline
+#if N
+ typename
+#endif
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(N)
+ >::type
+ BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(N))
+ {
+ return
+#if N
+ typename
+#endif
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(N)
+ >::type(EXPAND_PARAMETERS_A(N));
+ }
+
+#undef N
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,93 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_SET_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_SET_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/support/pair.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_set;
-
- template <>
- struct make_set<>
- {
- typedef set<> type;
- };
- }
-
- inline set<>
- make_set()
- {
- return set<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_set.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_ELEMENT
-#undef BOOST_FUSION_AS_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_set<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,91 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_VECTOR_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_VECTOR_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_vector;
-
- template <>
- struct make_vector<>
- {
- typedef vector<> type;
- };
- }
-
- inline vector<>
- make_vector()
- {
- return vector<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_vector.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_vector<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -1,110 +1,99 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- 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)
-==============================================================================*/
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_PP_IS_ITERATING
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
 
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/container/map/limits.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/container/generation/pair_tie.hpp>
-#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/mul.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename D, void_)
- , typename Extra = void_
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2))
         struct map_tie;
-
- template <>
- struct map_tie<>
- {
- typedef map<> type;
- };
     }
     
- inline map<>
- map_tie()
- {
- return map<>();
- }
-
-#define BOOST_FUSION_TIED_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename add_reference<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_PAIR_TIE(z, n, data) \
- fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/map_tie.hpp>
 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
 #include BOOST_PP_ITERATE()
 
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
 }}
 
 #endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
+#else
 
 #define N BOOST_PP_ITERATION()
 
     namespace result_of
     {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
-
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
- #undef TEXT
-#else
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
-#endif
+ VARIADIC_TEMPLATE(BOOST_PP_MUL(N,2))
+ struct map_tie
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_PP_MUL(FUSION_MAX_MAP_SIZE,2),
+ BOOST_PP_MUL(N,2))
         {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
+#define BOOST_FUSION_MAP_ELEMENT(Z,INNER_N,_)\
+ pair<\
+ BOOST_PP_CAT(T,INNER_N),\
+ typename detail::as_fusion_element_ref<\
+ BOOST_PP_CAT(T,BOOST_PP_ADD(N,INNER_N))\
+ >::type\
+ >
+
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_MAP_ELEMENT, _)> type;
+
+#undef BOOST_FUSION_MAP_ELEMENT
         };
     }
 
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
- map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
+#define BOOST_FUSION_MAP_TIE_ARGS2(Z,INNER_N,_)\
+ BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
+ BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY())
+
+ VARIADIC_TEMPLATE_A(BOOST_PP_MUL(N,2))
+ inline
+#if N
+ typename
+#endif
+ result_of::map_tie<
+ BOOST_PP_ENUM_PARAMS(N, A)
+ , BOOST_PP_ENUM(N, BOOST_FUSION_MAP_TIE_ARGS2, _)
+ >::type
+
+#define BOOST_FUSION_MAP_TIE_ARGUMENTS(Z,INNER_N,__)\
+ BOOST_PP_CAT(A,BOOST_PP_ADD(N,INNER_N))\
+ BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY())\
+ BOOST_PP_CAT(_,INNER_N)
+
+ map_tie(BOOST_PP_ENUM(N, BOOST_FUSION_MAP_TIE_ARGUMENTS, _))
+
+#undef BOOST_FUSION_MAP_TIE_ARGUMENTS
     {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
+ return
+#if N
+ typename
+#endif
+ result_of::map_tie<
+ BOOST_PP_ENUM_PARAMS(N, A)
+ , BOOST_PP_ENUM(N, BOOST_FUSION_MAP_TIE_ARGS2, _)
+ >::type(EXPAND_PARAMETERS_A(N));
     }
 
+#undef BOOST_FUSION_MAP_TIE_ARGS2
+
 #undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,71 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_PP_IS_ITERATING
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_FUSION_MAX_SEQ_SIZE)
+ struct BOOST_FUSION_FUNCTION_NAME;
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/seq_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#else
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE(N)
+ struct BOOST_FUSION_FUNCTION_NAME
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_FUSION_MAX_SEQ_SIZE,N)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_BINARY(
+ N,
+ typename detail::as_fusion_element_ref<,
+ >::type
+ )
+ >
+ type;
+ };
+ }
+
+ VARIADIC_TEMPLATE_A(N)
+ inline
+#if N
+ typename
+#endif
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(N)
+ >::type
+ BOOST_FUSION_FUNCTION_NAME(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(N))
+ {
+ return
+#if N
+ typename
+#endif
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(N)
+ >::type(EXPAND_PARAMETERS_A(N));
+ }
+
+#undef N
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,78 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_VECTOR_TIE_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_VECTOR_TIE_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct vector_tie;
- }
-
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/vector_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct vector_tie<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,25 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#include <boost/config.hpp>
+#include <boost/fusion/container/generation/ignore.hpp>
+
+#ifndef BOOST_FUSION_FUNCTION_NAME
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_FUSION_UNDEF_FUNCTION_NAME
+# define BOOST_FUSION_FUNCTION_NAME BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tie)
+#endif
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/seq_tie.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp>
+#endif
+
+#ifdef BOOST_FUSION_UNDEF_FUNCTION_NAME
+# undef BOOST_FUSION_FUNCTION_NAME
+# undef BOOST_FUSION_UNDEF_FUNCTION_NAME
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,37 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_LIST_TIE_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_LIST_TIE_HPP
-
-#include <boost/fusion/container/list/list.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename... Types>
- struct list_tie
- {
- typedef
- list<typename detail::as_fusion_element_ref<Types>::type...>
- type;
- };
- }
-
- template <typename... Types>
- inline typename
- result_of::list_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type
- list_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
- {
- return typename
- result_of::list_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type(
- BOOST_FUSION_FORWARD(Types, types)...);
- }
-
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,38 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_LIST_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_LIST_HPP
-
-#include <boost/fusion/container/list/list.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename... Types>
- struct make_list
- {
- typedef
- list<typename detail::as_fusion_element<Types>::type...>
- type;
- };
- }
-
- //TODO cschmidt: ?!
- template <typename... Types>
- inline typename
- result_of::make_list<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
- make_list(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
- {
- return typename
- result_of::make_list<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
- BOOST_FUSION_FORWARD(Types, types)...);
- }
-
-}}
-
-#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,40 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct BOOST_PP_CAT(make,BOOST_FUSION_SEQ_NAME)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ typename detail::as_fusion_element<Types>::type...
+ >
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::BOOST_PP_CAT(make,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type
+ BOOST_PP_CAT(make,BOOST_FUSION_SEQ_NAME)(
+ BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::BOOST_PP_CAT(make,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type(BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,38 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_SET_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_SET_HPP
-
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename... Types>
- struct make_set
- {
- typedef
- set<typename detail::as_fusion_element<Types>::type...>
- type;
- };
- }
-
- //TODO cschmidt: ?!
- template <typename... Types>
- inline typename
- result_of::make_set<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
- make_set(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
- {
- return typename
- result_of::make_set<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
- BOOST_FUSION_FORWARD(Types, types)...);
- }
-
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,38 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_VECTOR_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_VECTOR_HPP
-
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename... Types>
- struct make_vector
- {
- typedef
- vector<typename detail::as_fusion_element<Types>::type...>
- type;
- };
- }
-
- //TODO cschmidt: ?!
- template <typename... Types>
- inline typename
- result_of::make_vector<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
- make_vector(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
- {
- return typename
- result_of::make_vector<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
- BOOST_FUSION_FORWARD(Types, types)...);
- }
-
-}}
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -71,13 +71,13 @@
     //TODO cschmidt: ?!
     template <typename... Keys, typename... Types>
     inline typename
- result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_LREF(Types)...>::type
- map_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
+ result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ map_tie(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
     {
         typedef typename
- result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_LREF(Types)...>::type
+ result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
         type;
- return type(pair<Keys,BOOST_FUSION_R_ELSE_LREF(Types)>
+ return type(pair<Keys,BOOST_FUSION_R_ELSE_CLREF(Types)>
                     (BOOST_FUSION_FORWARD(Types, types))...);
     }
 

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct BOOST_FUSION_FUNCTION_NAME
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ typename detail::as_fusion_element_ref<Types>::type...
+ >
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type
+ BOOST_FUSION_FUNCTION_NAME(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ BOOST_FUSION_FUNCTION_NAME<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type(BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,37 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_VECTOR_TIE_HPP
-#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_VECTOR_TIE_HPP
-
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename... Types>
- struct vector_tie
- {
- typedef
- vector<typename detail::as_fusion_element_ref<Types>::type...>
- type;
- };
- }
-
- template <typename... Types>
- inline typename
- result_of::vector_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type
- vector_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
- {
- return typename
- result_of::vector_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type(
- BOOST_FUSION_FORWARD(Types, types)...);
- }
-
-}}
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_LIST_TIE_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_LIST_TIE_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/generation/detail/pp/list_tie.hpp>
-#else
-# include <boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp>
-#endif
+#include <boost/fusion/container/list/list.hpp>
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/generation/detail/seq_tie.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_MAKE_LIST_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_MAKE_LIST_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/generation/detail/pp/make_list.hpp>
-#else
-# include <boost/fusion/container/generation/detail/variadic_templates/make_list.hpp>
-#endif
+#include <boost/fusion/container/list/list.hpp>
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_MAKE_SET_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_MAKE_SET_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/generation/detail/pp/make_set.hpp>
-#else
-# include <boost/fusion/container/generation/detail/variadic_templates/make_set.hpp>
-#endif
+#include <boost/fusion/container/set/set.hpp>
+
+#define BOOST_FUSION_SEQ_NAME set
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_MAKE_VECTOR_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_MAKE_VECTOR_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/generation/detail/pp/make_vector.hpp>
-#else
-# include <boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp>
-#endif
+#include <boost/fusion/container/vector/vector.hpp>
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,8 @@
 #define BOOST_FUSION_CONTAINER_GENERATION_MAP_TIE_HPP
 
 #include <boost/config.hpp>
+#include <boost/fusion/container/generation/ignore.hpp>
+
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
 # include <boost/fusion/container/generation/detail/pp/map_tie.hpp>
 #else

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -33,17 +33,17 @@
     }
 
     template<typename Key, typename T>
- typename result_of::pair_tie<Key, BOOST_FUSION_R_ELSE_LREF(T)>::type
- pair_tie(BOOST_FUSION_R_ELSE_LREF(T) t)
+ typename result_of::pair_tie<Key, BOOST_FUSION_R_ELSE_CLREF(T)>::type
+ pair_tie(BOOST_FUSION_R_ELSE_CLREF(T) t)
     {
         return typename
             result_of::pair_tie<
                 Key
- , BOOST_FUSION_R_ELSE_LREF(T)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
>::type(BOOST_FUSION_FORWARD(T,t));
     }
 
-#ifdef BOOST_NO_RVALUE_REFERENCE
+#ifdef BOOST_NO_RVALUE_REFERENCES
     template<typename Key, typename T>
     typename result_of::pair_tie<Key, T const&>::type
     pair_tie(T const& t)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_CONTAINER_GENERATION_VECTOR_TIE_HPP
 #define BOOST_FUSION_CONTAINER_GENERATION_VECTOR_TIE_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/generation/detail/pp/vector_tie.hpp>
-#else
-# include <boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp>
-#endif
+#include <boost/fusion/container/vector/vector.hpp>
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/seq_tie.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -18,10 +18,13 @@
 #include <boost/fusion/support/assign_tags.hpp>
 #include <boost/fusion/support/sequence_assign.hpp>
 
-#include <boost/utility/enable_if.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/or.hpp>
+//#include <boost/utility/enable_if.hpp>
+#ifdef BOOST_NO_RVALUE_REFERENCES
+# include <boost/call_traits.hpp>
+#endif
 
 #include <boost/fusion/container/list/detail/cons/cons_fwd.hpp>
 #include <boost/fusion/container/list/detail/cons/at_impl.hpp>
@@ -61,7 +64,7 @@
         {}
 
         template<typename SeqAssign>
- nil(BOOST_FUSION_R_ELSE_LREF(SeqAssign))
+ nil(BOOST_FUSION_R_ELSE_CLREF(SeqAssign))
         {
             //TODO cschmidt: assert!
         }
@@ -114,23 +117,37 @@
 
 #undef CONS_CTOR
 
- template<typename SeqAssign>
- cons(BOOST_FUSION_R_ELSE_LREF(SeqAssign) seq,
- typename enable_if<
- is_sequence_assign<SeqAssign> >::type* =NULL)
- : car(fusion::front(seq.get()))
- , cdr(detail::assign_by_deref(),
- fusion::next(fusion::begin(seq.get())))
- {}
-
         //cschmidt: rvalue ref if possible, so this does not collide with
         //cons(OtherCar&&,OtherCdr&&)
         template<typename It>
- cons(detail::assign_by_deref,BOOST_FUSION_R_ELSE_LREF(It) it)
+ cons(detail::assign_by_deref,BOOST_FUSION_R_ELSE_CLREF(It) it)
           : car(fusion::deref(it))
           , cdr(detail::assign_by_deref(),fusion::next(it))
         {}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit cons(typename call_traits<Car>::param_type car)
+ : car(car)
+ {}
+#else
+ template<typename OtherCar>
+ explicit cons(OtherCar&& car)
+ : car(std::forward<OtherCar>(car))
+ {}
+#endif
+
+#define CONS_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ cons(support::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : car(fusion::front(seq_assign.get()))\
+ , cdr(detail::assign_by_deref(),\
+ fusion::next(fusion::begin(seq_assign.get())))\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(CONS_ASSIGN_CTOR,_);
+
+#undef CONS_ASSIGN_CTOR
+
         /*
         template<typename Seq>
         vector(typename enable_if_c<sizeof...(Elements)!=1,
@@ -141,25 +158,16 @@
         */
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
- explicit cons(Car const& car)
- : car(car), cdr()
- {}
-
- cons(Car const& car, Cdr const& cdr)
- : car(car), cdr(cdr)
+ cons(typename call_traits<Car>::param_type car,Cdr const& cdr)
+ : car(car)
+ , cdr(cdr)
         {}
 #else
- template<typename OtherCar>
- explicit cons(OtherCar&& other_car,
- typename disable_if<is_sequence_assign<OtherCar> >::type* =NULL)
- : car(std::forward<OtherCar>(other_car))
- , cdr()
- {}
-
         template<typename OtherCar,typename OtherCdr>
- cons(OtherCar&& other_car,OtherCdr&& other_cdr)
- : car(std::forward<OtherCar>(other_car))
- , cdr(std::forward<OtherCdr>(other_cdr))
+ cons(BOOST_FUSION_R_ELSE_CLREF(OtherCar) car,
+ BOOST_FUSION_R_ELSE_CLREF(OtherCdr) cdr)
+ : car(BOOST_FUSION_FORWARD(OtherCar,car))
+ , cdr(BOOST_FUSION_FORWARD(OtherCdr,cdr))
         {}
 #endif
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,37 +8,12 @@
 #ifndef BOOST_FUSION_CONTAINER_LIST_CONVERT_HPP
 #define BOOST_FUSION_CONTAINER_LIST_CONVERT_HPP
 
-#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/container/list/list.hpp>
 
-#include <boost/fusion/container/list/detail/list/convert_impl.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename Seq>
- struct as_list
- {
- typedef typename
- extension::convert_impl<list_tag>::
- template apply<typename detail::add_lref<Seq>::type>
- gen;
-
- typedef typename gen::type type;
- };
- }
-
- template <typename Seq>
- inline typename result_of::as_list<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
- as_list(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
- {
- typedef typename
- result_of::as_list<BOOST_FUSION_R_ELSE_CLREF(Seq)>::gen
- gen;
-
- return gen::call(seq);
- }
-
-}}
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,54 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_CONVERT_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_CONVERT_IMPL_HPP
-
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/container/list/detail/list/pp/as_list.hpp>
-# include <boost/fusion/sequence/intrinsic/begin.hpp>
-# include <boost/fusion/sequence/intrinsic/size.hpp>
-#else
-# include <boost/fusion/container/list/detail/list/variadic_templates/as_list_impl.hpp>
-#endif
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<list_tag>
- {
- template <typename SeqRef>
- struct apply
- {
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef typename
- detail::as_list<result_of::size<Seq>::value>
- gen;
- typedef typename gen::template apply<
- typename result_of::begin<Seq>::type>::type
- type;
-
- static type call(SeqRef seq)
- {
- return gen::call(
- fusion::begin(BOOST_FUSION_FORWARD(SeqRef,seq)));
- }
-#else
- typedef typename detail::as_list_impl<SeqRef> gen;
- typedef typename gen::apply::type type;
-
- static type call(SeqRef seq)
- {
- return gen::call(seq);
- }
-#endif
- };
- };
-}}}
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -19,6 +19,10 @@
 #include <boost/fusion/container/list/detail/list/at_impl.hpp>
 #include <boost/fusion/container/list/detail/list/value_at_impl.hpp>
 
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#endif
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -28,7 +32,7 @@
 
     VARIADIC_TEMPLATE(FUSION_MAX_LIST_SIZE)
     struct list
- : sequence_base<list<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)> >
+ : sequence_base<list<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_LIST_SIZE)> >
     {
         typedef forward_traversal_tag category;
 
@@ -36,7 +40,7 @@
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::false_ is_view;
 
- typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)> storage_type;
+ typedef vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_LIST_SIZE)> storage_type;
         typedef typename storage_type::size size;
 
         list()
@@ -52,12 +56,11 @@
 #undef LIST_CTOR
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- template <typename Arg>
- list(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
- : data(BOOST_FUSION_FORWARD(Arg,arg))
- {}
-
-# include <boost/fusion/container/list/detail/list/pp/list_forward_ctor.hpp>
+# define BOOST_FUSION_SEQ_NAME list
+# define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# undef BOOST_FUSION_MAX_SEQ_SIZE
+# undef BOOST_FUSION_SEQ_NAME
 #else
         template <typename... OtherArguments>
         list(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
@@ -77,7 +80,6 @@
         storage_type const& get_data() const { return data; }
 
     private:
-
         storage_type data;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,37 +8,12 @@
 #ifndef BOOST_FUSION_CONTAINER_MAP_CONVERT_HPP
 #define BOOST_FUSION_CONTAINER_MAP_CONVERT_HPP
 
-#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/container/map/map.hpp>
 
-#include <boost/fusion/container/map/detail/convert_impl.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename Seq>
- struct as_map
- {
- typedef typename
- extension::convert_impl<map_tag>::
- template apply<typename detail::add_lref<Seq>::type>
- gen;
-
- typedef typename gen::apply::type type;
- };
- }
-
- template <typename Seq>
- inline typename result_of::as_map<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
- as_map(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
- {
- typedef typename
- result_of::as_map<BOOST_FUSION_R_ELSE_CLREF(Seq)>::gen
- gen;
-
- return gen::call(seq);
- }
-
-}}
+#define BOOST_FUSION_SEQ_NAME map
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_MAP_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,56 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_MAP_DETAIL_CONVERT_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_CONVERT_IMPL_HPP
-
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/sequence/intrinsic/begin.hpp>
-# include <boost/fusion/sequence/intrinsic/size.hpp>
-# include <boost/fusion/container/map/detail/pp/as_map.hpp>
-#else
-# include <boost/fusion/container/map/detail/variadic_templates/as_map_impl.hpp>
-#endif
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<map_tag>
- {
- template <typename SeqRef>
- struct apply
- {
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef typename
- detail::as_map<result_of::size<SeqRef>::value>
- gen;
- typedef typename
- gen::template apply<
- typename result_of::begin<SeqRef>::type
- >::type
- type;
-
- static type call(SeqRef seq)
- {
- return gen::call(
- fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
- }
-#else
- typedef typename detail::as_map_impl<SeqRef> gen;
- typedef typename gen::apply::type type;
-
- static type call(SeqRef seq)
- {
- return gen::call(seq);
- }
-#endif
- };
- };
-}}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,102 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_AS_MAP_HPP
-#define BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_AS_MAP_HPP
-
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_map;
-
- template <>
- struct as_map<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef map<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return map<>();
- }
- };
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_map<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename It>
- static typename apply<Iterator>::type
- call(It const& it0)
- {
- typedef apply<It> gen;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return typename gen::type(
- BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -36,6 +36,10 @@
 #include <boost/fusion/container/map/detail/at_key_impl.hpp>
 #include <boost/fusion/container/map/detail/value_at_key_impl.hpp>
 
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#endif
+
 namespace boost { namespace fusion
 {
     struct fusion_sequence_tag;
@@ -44,7 +48,8 @@
 #endif
 
     VARIADIC_TEMPLATE(FUSION_MAX_MAP_SIZE)
- struct map : sequence_base<map<EXPAND_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
+ struct map
+ : sequence_base<map<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
     {
         struct category : forward_traversal_tag, associative_sequence_tag {};
 
@@ -52,7 +57,9 @@
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::false_ is_view;
 
- typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_MAP_SIZE)> storage_type;
+ typedef
+ vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)>
+ storage_type;
         typedef typename storage_type::size size;
 
 private:
@@ -132,20 +139,18 @@
 #define MAP_CTOR(COMBINATION,_)\
         map(map COMBINATION map_)\
           : data(BOOST_FUSION_FORWARD(map COMBINATION,map_).data)\
- {\
- }
+ {}
 
         BOOST_FUSION_ALL_CV_REF_COMBINATIONS(MAP_CTOR,_)
 
 #undef MAP_CTOR
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- template <typename Arg>
- map(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
- : data(BOOST_FUSION_FORWARD(Arg,arg))
- {}
-
-# include <boost/fusion/container/map/detail/pp/map_forward_ctor.hpp>
+# define BOOST_FUSION_SEQ_NAME map
+# define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_MAP_SIZE
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# undef BOOST_FUSION_MAX_SEQ_SIZE
+# undef BOOST_FUSION_SEQ_NAME
 #else
         template <typename... OtherArguments>
         map(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
@@ -161,7 +166,6 @@
             return *this;
         }
 
-#ifndef BOOST_NO_VARIADIC_TEMPLATES
         template <typename Key>
         typename meta_find_impl_const<Key>::type
         find_impl(mpl::identity<Key>) const
@@ -193,13 +197,11 @@
             return data.at_impl(
                     typename meta_find_impl_const<Key>::type::index()).second;
         }
-#endif
 
         storage_type& get_data() { return data; }
         storage_type const& get_data() const { return data; }
 
     private:
-
         storage_type data;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,37 +8,12 @@
 #ifndef BOOST_FUSION_CONTAINER_SET_CONVERT_HPP
 #define BOOST_FUSION_CONTAINER_SET_CONVERT_HPP
 
-#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/container/set/set.hpp>
 
-#include <boost/fusion/container/set/detail/convert_impl.hpp>
-
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename Seq>
- struct as_set
- {
- typedef typename
- extension::convert_impl<set_tag>::
- template apply<typename detail::add_lref<Seq>::type>
- gen;
-
- typedef typename gen::apply::type type;
- };
- }
-
- template <typename Seq>
- inline typename result_of::as_set<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
- as_set(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
- {
- typedef typename
- result_of::as_set<BOOST_FUSION_R_ELSE_CLREF(Seq)>::gen
- gen;
-
- return gen::call(seq);
- }
-
-}}
+#define BOOST_FUSION_SEQ_NAME set
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,55 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_SET_DETAIL_CONVERT_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_SET_DETAIL_CONVERT_IMPL_HPP
-
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/sequence/intrinsic/begin.hpp>
-# include <boost/fusion/sequence/intrinsic/size.hpp>
-# include <boost/fusion/container/set/detail/pp/as_set.hpp>
-#else
-# include <boost/fusion/container/set/detail/variadic_templates/as_set_impl.hpp>
-#endif
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<set_tag>
- {
- template <typename SeqRef>
- struct apply
- {
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef typename
- detail::as_set<result_of::size<SeqRef>::value>
- gen;
- typedef typename gen::template apply<
- typename result_of::begin<SeqRef>::type>::type
- type;
-
- static type call(SeqRef seq)
- {
- return gen::call(
- fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
- }
-#else
- typedef typename detail::as_set_impl<SeqRef> gen;
-
- typedef typename gen::apply::type type;
-
- static type call(SeqRef seq)
- {
- return gen::call(seq);
- }
-#endif
- };
- };
-}}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,102 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_PP_AS_SET_HPP
-#define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_AS_SET_HPP
-
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_set;
-
- template <>
- struct as_set<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef set<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return set<>();
- }
- };
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/as_set.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_set<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename It>
- static typename apply<It>::type
- call(It const& it0)
- {
- typedef apply<Iterator> gen;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return typename gen::type(
- BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -5,6 +5,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
+#ifndef BOOST_PP_IS_ITERATING
 #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_PP_SET_FORWARD_CTOR_HPP
 #define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_SET_FORWARD_CTOR_HPP
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -30,6 +30,9 @@
 #include <boost/fusion/container/set/detail/at_key_impl.hpp>
 #include <boost/fusion/container/set/detail/value_at_key_impl.hpp>
 
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#endif
 
 namespace boost { namespace fusion
 {
@@ -40,7 +43,7 @@
 
     VARIADIC_TEMPLATE(FUSION_MAX_SET_SIZE)
     struct set
- : sequence_base<set<EXPAND_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
+ : sequence_base<set<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
     {
         struct category : forward_traversal_tag, associative_sequence_tag {};
 
@@ -48,7 +51,7 @@
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::false_ is_view;
 
- typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_SET_SIZE)> storage_type;
+ typedef vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)> storage_type;
         typedef typename storage_type::size size;
 
         template <typename Key>
@@ -106,20 +109,18 @@
 #define SET_CTOR(COMBINATION,_)\
         set(set COMBINATION set_)\
           : data(BOOST_FUSION_FORWARD(set COMBINATION,set_).data)\
- {\
- }
+ {}
 
         BOOST_FUSION_ALL_CV_REF_COMBINATIONS(SET_CTOR,_)
 
 #undef SET_CTOR
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- template <typename Arg>
- set(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
- : data(BOOST_FUSION_FORWARD(Arg,arg))
- {}
-
-# include <boost/fusion/container/set/detail/pp/set_forward_ctor.hpp>
+# define BOOST_FUSION_SEQ_NAME set
+# define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# undef BOOST_FUSION_MAX_SEQ_SIZE
+# undef BOOST_FUSION_SEQ_NAME
 #else
         template <typename... OtherArguments>
         set(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
@@ -135,7 +136,6 @@
             return *this;
         }
 
-#ifndef BOOST_NO_VARIADIC_TEMPLATES
         template <typename Key>
         typename meta_find_impl_const<Key>::type
         find_impl(mpl::identity<Key>) const
@@ -164,7 +164,6 @@
             return data.at_impl(
                     typename meta_find_impl_const<Key>::type::index());
         }
-#endif
 
         storage_type& get_data() { return data; }
         storage_type const& get_data() const { return data; }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,36 +8,12 @@
 #ifndef BOOST_FUSION_CONTAINER_VECTOR_CONVERT_HPP
 #define BOOST_FUSION_CONTAINER_VECTOR_CONVERT_HPP
 
-#include <boost/fusion/container/vector/detail/convert_impl.hpp>
-#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
 
-namespace boost { namespace fusion
-{
- namespace result_of
- {
- template <typename Seq>
- struct as_vector
- {
- typedef typename
- extension::convert_impl<vector_tag>::
- template apply<typename detail::add_lref<Seq>::type>
- gen;
-
- typedef typename gen::type type;
- };
- }
-
- template <typename Seq> inline typename
- result_of::as_vector<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
- as_vector(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
- {
- typedef typename
- result_of::as_vector<BOOST_FUSION_R_ELSE_CLREF(Seq)>::gen
- gen;
-
- return gen::call(seq);
- }
-
-}}
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,55 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_CONVERT_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_CONVERT_IMPL_HPP
-
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/sequence/intrinsic/begin.hpp>
-# include <boost/fusion/sequence/intrinsic/size.hpp>
-# include <boost/fusion/container/vector/detail/pp/as_vector.hpp>
-#else
-# include <boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp>
-#endif
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<vector_tag>
- {
- template <typename SeqRef>
- struct apply
- {
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
- typedef typename
- detail::as_vector<result_of::size<SeqRef>::value>
- gen;
-
- typedef typename gen::template apply<
- typename result_of::begin<SeqRef>::type>::type
- type;
-
- static type call(SeqRef seq)
- {
- return gen::call(
- fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
- }
-#else
- typedef typename detail::as_vector_impl<SeqRef> gen;
- typedef typename gen::apply::type type;
-
- static type call(SeqRef seq)
- {
- return gen::call(seq);
- }
-#endif
- };
- };
-}}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,85 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_AS_VECTOR_HPP
-#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_AS_VECTOR_HPP
-
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_vector;
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/as_vector.hpp>
-#define BOOST_PP_ITERATION_LIMITS (0, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_vector<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename It>
- static typename apply<It>::type
- call(It const& it0)
- {
- typedef apply<It> gen;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return typename gen::type(
- BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,89 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/vector_iterator.hpp>
+#include <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
+
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+#include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ VARIADIC_TEMPLATE(FUSION_MAX_VECTOR_SIZE)
+ struct vector
+ : sequence_base<vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)> >
+ {
+ typedef typename
+ detail::vector_n_chooser<
+ EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)
+ >::type
+ vector_n;
+
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+
+ typedef typename vector_n::types types;
+ typedef vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)> self_type;
+
+ vector()
+ {}
+
+#define VECTOR_CTOR(COMBINATION,_)\
+ vector(self_type COMBINATION vec)\
+ : data(BOOST_FUSION_FORWARD(self_type COMBINATION,vec).data)\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_CTOR,_);
+
+#undef VECTOR_CTOR
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+ #include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+ template <typename Seq>
+ vector&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ data = BOOST_FUSION_FORWARD(Seq,seq);
+ return *this;
+ }
+
+ template <typename I>
+ typename detail::add_lref<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return data.at_impl(I());
+ }
+
+ template <typename I>
+ typename detail::add_lref<
+ typename add_const<typename mpl::at<types, I>::type>::type
+ >::type
+ at_impl(I) const
+ {
+ return data.at_impl(I());
+ }
+
+ vector_n data;
+ };
+}}
+
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,38 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_PP_IS_ITERATING
-#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_FORWARD_CTOR_HPP
-#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_FORWARD_CTOR_HPP
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- vector(BOOST_PP_ENUM_BINARY_PARAMS(N, const T,& _))
- : vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -25,7 +25,6 @@
 
 # include <boost/mpl/int.hpp>
 # include <boost/mpl/bool.hpp>
-# include <boost/mpl/vector.hpp>
 # include <boost/mpl/at.hpp>
 
 # include <boost/type_traits/add_const.hpp>
@@ -78,9 +77,9 @@
 # define BOOST_FUSION_DEFAULT_MEMBER_INIT(Z, N, _) BOOST_PP_CAT(m,N)()
 
         BOOST_PP_CAT(vector, N)()
-#if N
+# if N
           : BOOST_PP_ENUM(N, BOOST_FUSION_DEFAULT_MEMBER_INIT, _)
-#endif
+# endif
         {}
 
 # undef BOOST_FUSION_DEFAULT_MEMBER_INIT
@@ -120,14 +119,20 @@
         BOOST_PP_CAT(m,N)(\
             BOOST_FUSION_FORWARD(BOOST_PP_CAT(A,N), BOOST_PP_CAT(_,N)))
 
+#ifndef BOOST_NO_RVALUE_REFERENCES
         template <BOOST_PP_ENUM_PARAMS(N, typename A)>
+#endif
 # if (N == 1)
         explicit
 # endif
         BOOST_PP_CAT(vector, N)(
             BOOST_PP_ENUM_BINARY_PARAMS(
                     N,
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ T,
+#else
                     A,
+#endif
                     BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()) _)
             )
           : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, _)
@@ -136,38 +141,52 @@
 # undef BOOST_FUSION_MEMBER_INIT
 # endif
 
-# define BOOST_FUSION_MEMBER_INIT(Z, N, _)\
- BOOST_PP_CAT(m,N)(\
- fusion::deref(fusion::advance_c<N>(fusion::begin(seq.get()))))
-
- template<typename SeqAssign>
- BOOST_PP_CAT(vector,N)(BOOST_FUSION_R_ELSE_LREF(SeqAssign) seq,
- typename enable_if<
- is_sequence_assign<SeqAssign> >::type* =NULL)
 # if N
- : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, _)
-# endif
+# define BOOST_FUSION_MEMBER_INIT(Z, N, _)\
+ BOOST_PP_CAT(m,N)(fusion::deref(\
+ fusion::advance_c<N>(fusion::begin(seq_assign.get()))))
+# define VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ BOOST_PP_CAT(vector,N)(\
+ support::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : BOOST_PP_ENUM(N, BOOST_FUSION_MEMBER_INIT, _)\
         {}
 
-# undef BOOST_FUSION_MEMBER_INIT
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_ASSIGN_CTOR,_);
+
+# undef VECTOR_ASSIGN_CTOR
+# undef BOOST_FUSION_MEMBER_INIT
+# else
+# define VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ BOOST_PP_CAT(vector,N)(\
+ support::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_ASSIGN_CTOR,_);
+
+# undef VECTOR_ASSIGN_CTOR
+# endif
 
         template <typename Seq>
         BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>&
- operator=(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
         {
 # if N
             typedef typename
- result_of::begin<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
+ result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
             It0;
             It0 it0 = fusion::begin(seq);
 
+ m0=fusion::deref(it0);
+
 # define BOOST_FUSION_DEREF_MEMBER_ASSIGN(Z, N, _)\
             typedef typename\
                 result_of::next<BOOST_PP_CAT(It, BOOST_PP_DEC(N))>::type\
             BOOST_PP_CAT(It, N);\
             BOOST_PP_CAT(It, N) BOOST_PP_CAT(it, N)=\
                 fusion::next(BOOST_PP_CAT(it, BOOST_PP_DEC(N)));\
- \
+ \
             BOOST_PP_CAT(m, N) = fusion::deref(BOOST_PP_CAT(it, N));
 
             BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_FUSION_DEREF_MEMBER_ASSIGN, _)
@@ -178,6 +197,20 @@
             return *this;
         }
 
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>&
+ operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>const& seq)
+ {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ return this->operator=<
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>
+ >(seq);
+#else
+ return this->operator=<
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> const&
+ >(seq);
+#endif
+ }
+
         template<typename I>
         typename detail::add_lref<typename mpl::at<types, I>::type>::type
         at_impl(I)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,44 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_AS_VECTOR_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_AS_VECTOR_IMPL_HPP
-
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/mpl/begin.hpp>
-#include <boost/fusion/mpl/end.hpp>
-#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
-#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
-
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/unpack_args.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template<typename SeqRef>
- struct as_vector_impl
- {
- struct apply
- {
- typedef typename
- mpl::apply<
- mpl::unpack_args<variadic_quote<vector> >
- , typename detail::to_random_access_mpl_seq<
- typename detail::remove_reference<SeqRef>::type
- >::type
- >::type
- type;
- };
-
- static typename apply::type
- call(SeqRef seq)
- {
- return typename apply::type(
- sequence_assign(BOOST_FUSION_FORWARD(SeqRef,seq)));
- }
- };
-}}}
-
-#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -0,0 +1,204 @@
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_VECTOR_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/sequence_assign.hpp>
+#include <boost/fusion/support/assign_tags.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+
+#include <boost/mpl/int.hpp>
+
+#include <utility>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace detail
+ {
+ template<int Index,typename... Elements>
+ struct vector_impl;
+
+ template<int Index>
+ struct vector_impl<Index>
+ {
+ template<int,typename...>friend struct vector_impl;
+ template<typename...>friend struct fusion::vector;
+
+ protected:
+ typedef void_ head;
+
+ vector_impl()
+ {}
+
+ vector_impl(assign_directly)
+ {}
+
+ template<typename It>
+ vector_impl(assign_by_deref,It const&)
+ {}
+
+ template<typename It>
+ void
+ assign(It const&)
+ {}
+
+ void at_impl();
+ };
+
+ template<int Index,typename Head,typename... Others>
+ struct vector_impl<Index,Head,Others...>
+ : vector_impl<Index+1,Others...>
+ {
+ template<int,typename...>friend struct vector_impl;
+ template<typename...>friend struct fusion::vector;
+
+ private:
+ typedef vector_impl<Index+1,Others...> base;
+
+ public:
+ using base::at_impl;
+
+ protected:
+ typedef Head head;
+
+ private:
+ Head _element;
+
+ protected:
+ vector_impl()
+ : _element()
+ {}
+
+ template<typename It>
+ vector_impl(assign_by_deref,It const& it)
+ : base(assign_by_deref(),fusion::next(it))
+ , _element(fusion::deref(it))
+ {}
+
+ template<typename It>
+ void
+ assign(It const& it)
+ {
+ _element=fusion::deref(it);
+ static_cast<base*>(this)->assign(fusion::next(it));
+ }
+
+ template<typename OtherHead,typename... OtherElements>
+ vector_impl(assign_directly,
+ BOOST_FUSION_R_ELSE_CLREF(OtherHead) other_head,
+ BOOST_FUSION_R_ELSE_CLREF(OtherElements)... other_elements)
+ : base(assign_directly(),
+ BOOST_FUSION_FORWARD(OtherElements,other_elements)...)
+ , _element(BOOST_FUSION_FORWARD(OtherHead,other_head))
+ {}
+
+ typename detail::add_lref<Head>::type
+ at_impl(mpl::int_<Index>)
+ {
+ return _element;
+ }
+
+ typename detail::add_lref<typename add_const<Head>::type>::type
+ at_impl(mpl::int_<Index>)const
+ {
+ return _element;
+ }
+ };
+ }
+
+ template<typename... Elements>
+ struct vector
+ : sequence_base<vector<Elements...> >
+ , detail::vector_impl<0,Elements...>
+ {
+ private:
+ typedef detail::vector_impl<0,Elements...> base;
+
+ public:
+ typedef vector<Elements...> this_type;
+ typedef typename variadic_arguments_to_vector<Elements...>::type types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<sizeof...(Elements)> size;
+
+ vector()
+ {}
+
+#define VECTOR_CTOR(COMBINATION,_)\
+ vector(vector COMBINATION vec)\
+ : base(detail::assign_by_deref(),\
+ fusion::begin(BOOST_FUSION_FORWARD(vector COMBINATION,vec)))\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_CTOR,_)
+
+#undef VECTOR_CTOR
+
+ template<typename... OtherElements>
+ explicit
+ vector(BOOST_FUSION_R_ELSE_CLREF(OtherElements)... other_elements)
+ : base(detail::assign_directly(),
+ BOOST_FUSION_FORWARD(OtherElements,other_elements)...)
+ {}
+
+#define VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ vector(support::sequence_assgin_type<SeqRef> COMBINATION seq_assign)\
+ : base(detail::assign_by_deref(),seq_assign.get())
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_ASSIGN_CTOR,_);
+
+#undef VECTOR_ASSIGN_CTOR
+
+ /*
+ template<typename Seq>
+ vector(typename enable_if_c<sizeof...(Elements)!=1,
+ BOOST_FUSION_R_ELSE_CLREF(Seq)>::type seq)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq.seq)))
+ {}
+ */
+
+ template<typename Seq>
+ vector&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ static_cast<base*>(this)->assign(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ return *this;
+ }
+
+ template<typename I>
+ typename detail::add_lref<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I)
+ {
+ return base::at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename detail::add_lref<
+ typename add_const<typename mpl::at<types, I>::type>::type
+ >::type
+ at_impl(I) const
+ {
+ return base::at_impl(mpl::int_<I::value>());
+ }
+ };
+
+}}
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,199 +0,0 @@
-// Copyright Christopher Schmidt 2009.
-// 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_VECTOR_IMPL_HPP
-#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_VECTOR_IMPL_HPP
-
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/iterator/next.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp>
-#include <boost/fusion/support/sequence_assign.hpp>
-#include <boost/fusion/support/assign_tags.hpp>
-#include <boost/fusion/support/sequence_base.hpp>
-
-#include <boost/mpl/int.hpp>
-
-#include <utility>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace detail
- {
- template<int Index,typename... Elements>
- struct vector_impl;
-
- template<int Index>
- struct vector_impl<Index>
- {
- template<int,typename...>friend struct vector_impl;
- template<typename...>friend struct fusion::vector;
-
- protected:
- typedef void_ head;
-
- vector_impl()
- {}
-
- vector_impl(assign_directly)
- {}
-
- template<typename It>
- vector_impl(assign_by_deref,It const&)
- {}
-
- template<typename It>
- void
- assign(It const&)
- {}
-
- void at_impl();
- };
-
- template<int Index,typename Head,typename... Others>
- struct vector_impl<Index,Head,Others...>
- : vector_impl<Index+1,Others...>
- {
- template<int,typename...>friend struct vector_impl;
- template<typename...>friend struct fusion::vector;
-
- private:
- typedef vector_impl<Index+1,Others...> base;
-
- public:
- using base::at_impl;
-
- protected:
- typedef Head head;
-
- private:
- Head _element;
-
- protected:
- vector_impl()
- : _element()
- {}
-
- template<typename It>
- vector_impl(assign_by_deref,It const& it)
- : base(assign_by_deref(),fusion::next(it))
- , _element(fusion::deref(it))
- {}
-
- template<typename It>
- void
- assign(It const& it)
- {
- _element=fusion::deref(it);
- static_cast<base*>(this)->assign(fusion::next(it));
- }
-
- template<typename OtherHead,typename... OtherElements>
- vector_impl(assign_directly,
- BOOST_FUSION_R_ELSE_CLREF(OtherHead) other_head,
- BOOST_FUSION_R_ELSE_CLREF(OtherElements)... other_elements)
- : base(assign_directly(),
- BOOST_FUSION_FORWARD(OtherElements,other_elements)...)
- , _element(BOOST_FUSION_FORWARD(OtherHead,other_head))
- {}
-
- typename detail::add_lref<Head>::type
- at_impl(mpl::int_<Index>)
- {
- return _element;
- }
-
- typename detail::add_lref<typename add_const<Head>::type>::type
- at_impl(mpl::int_<Index>)const
- {
- return _element;
- }
- };
- }
-
- template<typename... Elements>struct vector
- : sequence_base<vector<Elements...> >
- , detail::vector_impl<0,Elements...>
- {
- private:
- typedef detail::vector_impl<0,Elements...> base;
-
- public:
- typedef vector<Elements...> this_type;
- typedef typename variadic_arguments_to_vector<Elements...>::type types;
- typedef vector_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
- typedef random_access_traversal_tag category;
- typedef mpl::int_<sizeof...(Elements)> size;
-
- vector()
- {}
-
-#define VECTOR_CTOR(COMBINATION,_)\
- vector(vector COMBINATION vec)\
- : base(detail::assign_by_deref(),\
- fusion::begin(BOOST_FUSION_FORWARD(vector COMBINATION,vec)))\
- {}
-
- BOOST_FUSION_ALL_CV_REF_COMBINATIONS(VECTOR_CTOR,_)
-
-#undef VECTOR_CTOR
-
- template<typename SeqAssign>
- vector(BOOST_FUSION_R_ELSE_LREF(SeqAssign) seq,
- typename enable_if<
- is_sequence_assign<SeqAssign> >::type* =NULL)
- : base(detail::assign_by_deref(),fusion::begin(seq.get()))
- {}
-
- /*
- template<typename Seq>
- vector(typename enable_if_c<sizeof...(Elements)!=1,
- BOOST_FUSION_R_ELSE_CLREF(Seq)>::type seq)
- : base(detail::assign_by_deref(),
- fusion::begin(BOOST_FUSION_FORWARD(Seq,seq.seq)))
- {}
- */
-
- template<typename... OtherElements>
- vector(BOOST_FUSION_R_ELSE_CLREF(OtherElements)... other_elements)
- : base(detail::assign_directly(),
- BOOST_FUSION_FORWARD(OtherElements,other_elements)...)
- {}
-
- template<typename Seq>
- vector&
- operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
- {
- static_cast<base*>(this)->assign(
- fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
- return *this;
- }
-
- template<typename I>
- typename detail::add_lref<
- typename mpl::at<types, I>::type
- >::type
- at_impl(I)
- {
- return base::at_impl(mpl::int_<I::value>());
- }
-
- template<typename I>
- typename detail::add_lref<
- typename add_const<typename mpl::at<types, I>::type>::type
- >::type
- at_impl(I) const
- {
- return base::at_impl(mpl::int_<I::value>());
- }
- };
-
-}}
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -1,9 +1,7 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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)
-==============================================================================*/
+// Copyright Christopher Schmidt 2009.
+// 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 BOOST_FUSION_CONTAINER_VECTOR_VECTOR_HPP
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_HPP
@@ -11,129 +9,7 @@
 #include <boost/fusion/container/vector/vector_fwd.hpp>
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/container/vector/detail/vector_iterator.hpp>
-#include <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
-
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/is_base_of.hpp>
-#include <boost/detail/workaround.hpp>
-
-namespace boost { namespace fusion
-{
- struct fusion_sequence_tag;
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
- struct vector
- : sequence_base<vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> >
- {
- typedef typename
- detail::vector_n_chooser<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)
- >::type
- vector_n;
-
- typedef typename vector_n::types types;
- typedef typename vector_n::fusion_tag fusion_tag;
- typedef typename vector_n::tag tag;
- typedef typename vector_n::size size;
- typedef typename vector_n::category category;
- typedef typename vector_n::is_view is_view;
-
- vector()
- {}
-
- template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)>
- vector(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs)
- : vec(rhs.vec)
- {}
-
- vector(vector const& rhs)
- : vec(rhs.vec)
- {}
-
- template <typename Seq>
- vector(Seq const& rhs)
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
- : vec(ctor_helper(rhs, is_base_of<vector, Seq>()))
- {}
-#else
- : vec(rhs)
- {}
-#endif
-
- #include <boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp>
-
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)>
- vector&
- operator=(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs)
- {
- vec = rhs.vec;
- return *this;
- }
-
- template <typename T>
- vector&
- operator=(T const& rhs)
- {
- vec = rhs;
- return *this;
- }
-
- template <int N>
- typename detail::add_lref<typename mpl::at_c<types, N>::type>::type
- at_impl(mpl::int_<N> index)
- {
- return vec.at_impl(index);
- }
-
- //TODO???
- template <int N>
- typename detail::add_lref<
- typename add_const<typename mpl::at_c<types, N>::type>::type
- >::type
- at_impl(mpl::int_<N> index) const
- {
- return vec.at_impl(index);
- }
-
- template <typename I>
- typename detail::add_lref<typename mpl::at<types, I>::type>::type
- at_impl(I index)
- {
- return vec.at_impl(mpl::int_<I::value>());
- }
-
- template<typename I>
- typename detail::add_lref<
- typename add_const<typename mpl::at<types, I>::type>::type
- >::type
- at_impl(I index) const
- {
- return vec.at_impl(mpl::int_<I::value>());
- }
-
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
- static vector_n const&
- ctor_helper(vector const& rhs, mpl::true_)
- {
- return rhs.vec;
- }
-
- template <typename T>
- static T const&
- ctor_helper(T const& rhs, mpl::false_)
- {
- return rhs;
- }
-#endif
-
- vector_n vec;
- };
-}}
+# include <boost/fusion/container/vector/detail/pp/vector.hpp>
 #else
 # include <boost/fusion/container/vector/vector_fwd.hpp>
 # include <boost/fusion/support/ref.hpp>
@@ -152,7 +28,7 @@
 # include <boost/fusion/container/vector/detail/distance_impl.hpp>
 # include <boost/fusion/container/vector/detail/advance_impl.hpp>
 
-# include <boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp>
+# include <boost/fusion/container/vector/detail/variadic_templates/vector.hpp>
 #endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR10_HPP
 
 #include <boost/config.hpp>
+#include <boost/mpl/vector/vector10.hpp>
 
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
 # define BOOST_FUSION_FROM 0

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR20_HPP
 
 #include <boost/config.hpp>
+#include <boost/mpl/vector/vector20.hpp>
 
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
 # define BOOST_FUSION_FROM 11
@@ -23,4 +24,5 @@
 #else
 # include <boost/fusion/container/vector/vector.hpp>
 #endif
+
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR30_HPP
 
 #include <boost/config.hpp>
+#include <boost/mpl/vector/vector30.hpp>
 
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
 # define BOOST_FUSION_FROM 21

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR40_HPP
 
 #include <boost/config.hpp>
+#include <boost/mpl/vector/vector40.hpp>
 
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
 # define BOOST_FUSION_FROM 31

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -7,6 +7,7 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_VECTOR50_HPP
 
 #include <boost/config.hpp>
+#include <boost/mpl/vector/vector50.hpp>
 
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
 # define BOOST_FUSION_FROM 41

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/decltype_and_variadic_templates/unfused_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/decltype_and_variadic_templates/unfused_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/decltype_and_variadic_templates/unfused_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -75,8 +75,9 @@
 # define CALL_OPERATOR(COMBINATION)\
         template<typename... Args>\
         typename support::result_of<\
- typename detail::forward_as<int COMBINATION, F>::type\
- (typename result_of::as_vector<TransformSeq&&>::type&&)\
+ typename support::get_func_base<\
+ typename detail::forward_as<int COMBINATION, F>::type\
+ >::type(typename result_of::as_vector<TransformSeq&&>::type&&)\
>::type\
         operator()(Args&&... args) COMBINATION\
         {\
@@ -87,8 +88,9 @@
 # define CALL_OPERATOR(COMBINATION)\
         template<typename... Args>\
         typename support::result_of<\
- typename detail::forward_as<int COMBINATION, F>::type\
- (typename result_of::vector_tie<Args&&...>::type&&)\
+ typename support::get_func_base<\
+ typename detail::forward_as<int COMBINATION, F>::type\
+ >::type(typename result_of::vector_tie<TransformSeq&&>::type&&)\
>::type\
         operator()(Args&&... args) COMBINATION\
         {\

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -30,11 +30,11 @@
 
     template<typename F>
     inline typename
- result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_LREF(F)>::type
- BOOST_FUSION_FUNC_NAME(BOOST_FUSION_R_ELSE_LREF(F) f)
+ result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_CLREF(F)>::type
+ BOOST_FUSION_FUNC_NAME(BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return typename
- result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_LREF(F)>::
+ result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_CLREF(F)>::
                 type(BOOST_FUSION_FORWARD(F,f));
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -24,14 +24,14 @@
 
         template<typename T>
         static inline wanted
- do_get_pointer(BOOST_FUSION_R_ELSE_LREF(T), wanted ptr)
+ do_get_pointer(BOOST_FUSION_R_ELSE_CLREF(T), wanted ptr)
         {
             return ptr;
         }
 
         template<typename T>
         static inline wanted
- do_get_pointer(BOOST_FUSION_R_ELSE_LREF(T) t, void const*)
+ do_get_pointer(BOOST_FUSION_R_ELSE_CLREF(T) t, void const*)
         {
             return get_pointer(BOOST_FUSION_FORWARD(T,t));
         }
@@ -51,7 +51,7 @@
 
         template <typename T>
         static inline wanted
- get(BOOST_FUSION_R_ELSE_LREF(T) t)
+ get(BOOST_FUSION_R_ELSE_CLREF(T) t)
         {
             return do_get_pointer(
                     BOOST_FUSION_FORWARD(T,t),

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -48,19 +48,37 @@
     }
 
     template <typename N, typename Seq>
- inline typename result_of::at<BOOST_FUSION_R_ELSE_LREF(Seq), N>::type
- at(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ inline typename result_of::at<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::type
+ at(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- return result_of::at<BOOST_FUSION_R_ELSE_LREF(Seq), N>::call(seq);
+ return result_of::at<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::call(seq);
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename N, typename Seq>
+ inline typename result_of::at<Seq&, N>::type
+ at(Seq& seq)
+ {
+ return result_of::at<Seq&, N>::call(seq);
+ }
+#endif
+
     template <int N, typename Seq>
     inline typename
- result_of::at_c<BOOST_FUSION_R_ELSE_LREF(Seq), N>::type
- at_c(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ result_of::at_c<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::type
+ at_c(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return fusion::at<mpl::int_<N> >(seq);
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <int N, typename Seq>
+ inline typename result_of::at_c<Seq&, N>::type
+ at_c(Seq& seq)
+ {
+ return fusion::at<mpl::int_<N> >(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -55,6 +55,15 @@
>::call(seq);
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Key, typename Seq>
+ inline typename result_of::at_key<Seq&, Key>::type
+ at_key(Seq& seq)
+ {
+ return result_of::at_key<Seq&, Key>::call(seq);
+ }
+#endif
+
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -35,6 +35,15 @@
     {
         return *fusion::prior(fusion::end(seq));
     }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::back<Seq&>::type
+ back(Seq& seq)
+ {
+ return *fusion::prior(fusion::end(seq));
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -41,12 +41,21 @@
 
     template <typename Seq>
     inline typename
- result_of::begin<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
- begin(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ begin(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- return result_of::begin<BOOST_FUSION_R_ELSE_LREF(Seq)>::call(seq);
+ return result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(seq);
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::begin<Seq&>::type
+ begin(Seq& seq)
+ {
+ return result_of::begin<Seq&>::call(seq);
+ }
+#endif
+
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -47,6 +47,15 @@
         return result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(seq);
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::end<Seq&>::type
+ end(Seq& seq)
+ {
+ return result_of::end<Seq&>::call(seq);
+ }
+#endif
+
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -33,6 +33,14 @@
         return *fusion::begin(seq);
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::front<Seq&>::type
+ front(Seq& seq)
+ {
+ return *fusion::begin(seq);
+ }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -10,7 +10,7 @@
 #define BOOST_FUSION_SEQUENCE_INTRINSIC_SWAP_HPP
 
 #include <boost/config.hpp>
-#ifndef BOOST_NO_RVALUE_REFERENCES
+#ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/fusion/view/zip_view.hpp>
 # include <boost/fusion/algorithm/iteration/for_each.hpp>
 # include <boost/fusion/sequence/intrinsic/front.hpp>
@@ -30,8 +30,7 @@
             template<typename Elem>
             void operator()(Elem const& e) const
             {
- using std::swap;
- swap(front(e), back(e));
+ std::swap(fusion::front(e), fusion::back(e));
             }
         };
     }
@@ -49,10 +48,11 @@
 #ifdef BOOST_NO_RVALUE_REFERENCES
     template<typename Seq1, typename Seq2>
     void
- swap(Seq1& lhs, Seq2& rhs)
+ swap(Seq1& seq1, Seq2& seq2)
     {
+ //TODO zip()
         typedef vector<Seq1&, Seq2&> references;
- for_each(zip_view<references>(references(lhs, rhs)), detail::swap());
+ for_each(zip_view<references>(references(seq1, seq2)), detail::swap());
     }
 #else
     using std::swap;

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -9,15 +9,51 @@
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 
 #include <boost/config.hpp>
+#ifdef BOOST_NO_RVALUE_REFERENCES
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/identity.hpp>
+#else
+# include <boost/mpl/if.hpp>
+#endif
 
 namespace boost { namespace fusion { namespace traits
 {
     //TODO doc!
 #ifdef BOOST_NO_RVALUE_REFERENCES
     template <typename T>
+ struct deduce_impl
+ {
+ typedef T type;
+ };
+
+ template <typename T>
+ struct deduce_impl<T const&>
+ {
+ typedef T type;
+ };
+
+ template <typename T>
+ struct deduce_impl<T const volatile&>
+ {
+ typedef T type;
+ };
+
+ template <typename T>
     struct deduce
- : detail::as_fusion_element<T>
- {};
+ {
+ typedef typename detail::as_fusion_element<T>::type element;
+
+ typedef typename
+ mpl::eval_if<
+ mpl::and_<
+ detail::is_lrref<T>
+ , is_same<typename detail::identity<T>::type,element>
+ >
+ , deduce_impl<T>
+ , mpl::identity<element>
+ >::type
+ type;
+ };
 #else
     template <typename T>
     struct deduce

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -32,7 +32,7 @@
         typedef T& type;
     };
 
-#define CV_REF_SPECIALISATION(COMBINATION,_)\
+#define CV_REF_SPECIALIZATION(COMBINATION,_)\
     template <typename T>\
     struct as_fusion_element<T COMBINATION>\
       : as_fusion_element<T>\
@@ -44,9 +44,9 @@
         typedef T& type;\
     };
 
- BOOST_FUSION_ALL_CV_REF_COMBINATIONS(CV_REF_SPECIALISATION,_)
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(CV_REF_SPECIALIZATION,_)
 
-#undef CV_REF_SPECIALISATION
+#undef CV_REF_SPECIALIZATION
 
     template <typename T, int N>
     struct as_fusion_element<T(&)[N]>

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -22,11 +22,29 @@
           : second()
         {}
 
+#define PAIR_CTOR(COMBINATION,_)\
+ template<typename OtherFirst,typename OtherSecond>\
+ pair(pair<OtherFirst,OtherSecond> COMBINATION pair_)\
+ : second(static_cast<pair<OtherFirst,OtherSecond> COMBINATION>(pair_)\
+ .second)\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(PAIR_CTOR,_)
+
+#undef PAIR_CTOR
+
+
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ pair(Second const& second)
+ : second(second)
+ {}
+# else
         template<typename Arg>
- pair(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
- : second(BOOST_FUSION_FORWARD(Arg,arg))
+ pair(Arg&& arg)
+ : second(std::forward<Arg>(arg))
         {}
+# endif
 #else
         template<typename Arg1,typename... Args>
         pair(Arg1&& arg1, Args&&... args)
@@ -35,29 +53,6 @@
 #endif
 
         template <typename Second2>
- pair(pair<First, Second2> const& rhs)
- : second(rhs.second)
- {}
-
-#ifndef BOOST_NO_RVALUE_REFERENCES
- //TODO cschmidt: needed?
- template <typename Second2>
- pair(pair<First, Second2> const&& rhs)
- : second(std::forward<const Second2>(rhs.second))
- {}
-
- template <typename Second2>
- pair(pair<First, Second2>& rhs)
- : second(rhs.second)
- {}
-
- template <typename Second2>
- pair(pair<First, Second2>&& rhs)
- : second(std::forward<Second2>(rhs.second))
- {}
-#endif
-
- template <typename Second2>
         pair& operator=(pair<First, Second2> const& rhs)
         {
             second = rhs.second;

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/ref.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/ref.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/ref.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -34,8 +34,8 @@
 #ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/mpl/bool.hpp>
 
-# define BOOST_FUSION_R_ELSE_CLREF(OBJECT) OBJECT const&
 # define BOOST_FUSION_R_ELSE_LREF(OBJECT) OBJECT&
+# define BOOST_FUSION_R_ELSE_CLREF(OBJECT) OBJECT const&
 # define BOOST_FUSION_RREF_ELSE_OBJ(OBJECT) OBJECT
 # define BOOST_FUSION_OBJ_ELSE_LREF(OBJECT) OBJECT&
 # define BOOST_FUSION_OBJ_ELSE_CLREF(OBJECT) OBJECT const&
@@ -50,8 +50,8 @@
 #else
 # include <utility>
 
-# define BOOST_FUSION_R_ELSE_CLREF(OBJECT) OBJECT&&
 # define BOOST_FUSION_R_ELSE_LREF(OBJECT) OBJECT&&
+# define BOOST_FUSION_R_ELSE_CLREF(OBJECT) OBJECT&&
 # define BOOST_FUSION_RREF_ELSE_OBJ(OBJECT) OBJECT&&
 # define BOOST_FUSION_OBJ_ELSE_LREF(OBJECT) OBJECT
 # define BOOST_FUSION_OBJ_ELSE_CLREF(OBJECT) OBJECT
@@ -171,38 +171,40 @@
     template <typename TestType,typename Type>
     struct forward_as
     {
+ typedef typename remove_reference<TestType>::type test_type;
+
         typedef typename
- mpl::if_<is_const<typename remove_reference<TestType>::type>
- , typename add_const<Type>::type
- , Type
+ mpl::if_<is_const<test_type>
+ , typename add_const<Type>::type
+ , Type
>::type
         const_type;
 
         typedef typename
- mpl::if_<is_volatile<typename remove_reference<TestType>::type>
- , typename add_volatile<const_type>::type
- , const_type
+ mpl::if_<is_volatile<test_type>
+ , typename add_volatile<const_type>::type
+ , const_type
>::type
- real_type;
+ cv_type;
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
- typedef real_type& type;
+ typedef cv_type& type;
 #else
         typedef typename
             mpl::eval_if<
                 //8.5.3p5...
                 mpl::or_<is_class<Type>
- , is_array<Type>
- //cschmidt: workaround until Boost.type_traits supports
- //rvalue refs!
- , mpl::not_<is_rref<TestType> >
+ , is_array<Type>
+ //cschmidt: workaround until Boost.type_traits supports
+ //rvalue refs!
+ , mpl::not_<is_rref<TestType> >
>,
                 mpl::eval_if<
- is_rref<TestType>
- , mpl::identity<real_type&&>
- , detail::add_lref<real_type>
+ is_rref<TestType>
+ , mpl::identity<cv_type&&>
+ , detail::add_lref<cv_type>
>,
- mpl::identity<real_type>
+ mpl::identity<cv_type>
>::type
         type;
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/result_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/result_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/result_of.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -12,20 +12,19 @@
 //Therefore we emulate the old behavior if (and only if) the boost
 //implementation falls back to decltype by default.
 
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/mpl/bool.hpp>
-#else
-# include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/support/ref.hpp>
 
-# include <boost/type_traits/remove_pointer.hpp>
-# include <boost/type_traits/is_function.hpp>
-# include <boost/type_traits/is_member_function_pointer.hpp>
-#endif
-#if !defined(BOOST_NO_DECLTYPE) && !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/mpl/if.hpp>
+#else
 # include <boost/fusion/support/ref.hpp>
 
-# include <boost/mpl/has_xxx.hpp>
 # include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/has_xxx.hpp>
 
 # include <boost/type_traits/is_function.hpp>
 #endif
@@ -136,7 +135,34 @@
 
 #if defined(BOOST_NO_DECLTYPE) || defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
     using boost::result_of;
+
+ template<typename FRef>
+ struct get_func_base
+ {
+ typedef typename
+ remove_pointer<
+ typename detail::identity<FRef>::type
+ >::type
+ f;
+
+ typedef typename
+ mpl::if_<
+ mpl::or_<
+ typename is_function<f>::type
+ , typename is_member_function_pointer<f>::type
+ >
+ , FRef
+ , f
+ >::type
+ type;
+ };
 #else
+ template<typename F>
+ struct get_func_base
+ {
+ typedef F f;
+ };
+
     namespace detail
     {
         BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type)
@@ -184,7 +210,7 @@
         typedef typename
             mpl::eval_if<
                 is_function<f>
- , boost::result_of<F(Args...)>
+ , boost::result_of<f(Args...)>
               , detail::result_of_class_type<F,f,Args...>
>::type
         type;

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/sequence_assign.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/sequence_assign.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/sequence_assign.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -13,13 +13,13 @@
 
 namespace boost{namespace fusion{
 
- namespace detail
+ namespace support
     {
         template<typename Seq>
         struct sequence_assign_type
         {
- sequence_assign_type(Seq seq_):
- seq(seq_)
+ sequence_assign_type(Seq seq)
+ : seq(seq)
             {
             }
 
@@ -33,36 +33,9 @@
         };
     }
 
- template<typename>
- struct is_sequence_assign
- : mpl::false_
- {
- };
-
- template<typename Seq>
- struct is_sequence_assign<detail::sequence_assign_type<Seq> >
- : mpl::true_
- {
- };
-
-# define IS_SEQUENCE_ASSIGN_SPECIALIZATION(COMBINATION,_)\
- template<typename Seq>\
- struct is_sequence_assign<detail::sequence_assign_type<Seq> COMBINATION>\
- : mpl::true_\
- {\
- };
-
- BOOST_FUSION_ALL_CV_REF_COMBINATIONS(IS_SEQUENCE_ASSIGN_SPECIALIZATION,_);
-
-# undef IS_SEQUENCE_ASSIGN
-
     template<typename Seq>
- typename mpl::if_<
- is_sequence_assign<BOOST_FUSION_R_ELSE_LREF(Seq)>
- , BOOST_FUSION_R_ELSE_LREF(Seq)
- , detail::sequence_assign_type<BOOST_FUSION_R_ELSE_LREF(Seq)>
- >::type
- sequence_assign(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ support::sequence_assign_type<BOOST_FUSION_R_ELSE_CLREF(Seq)>
+ sequence_assign(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return seq;
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/template.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/template.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/template.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,20 +8,58 @@
 
 #include <boost/config.hpp>
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/support/ref.hpp>
+
+# include <boost/preprocessor/expand.hpp>
+# include <boost/preprocessor/empty.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+//# ifndef BOOST_NO_RVALUE_REFERENCES
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/repetition/enum.hpp>
+//# endif
 # include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
 # include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+# include <boost/call_traits.hpp>
 #endif
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
-# define VARIADIC_TEMPLATE_WITH_DEFAULT(MAX) struct void_;\
- template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(MAX, typename T, void_)>
-# define VARIADIC_TEMPLATE(MAX) struct void;\
- template<BOOST_PP_ENUM_PARAMS(MAX, typename T)>
-# define EXPAND_ARGUMENTS(MAX) BOOST_PP_ENUM_PARAMS(MAX, T)
+# define DUMMY1(_)
+# define DUMMY2(_,__)
+
+# define VARIADIC_TEMPLATE(N) template<BOOST_PP_ENUM_PARAMS(N, typename T)>
+# define VARIADIC_TEMPLATE_WITH_DEFAULT(N) template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(N, typename T, void_)>
+# define EXPAND_TEMPLATE_ARGUMENTS(N) BOOST_PP_ENUM_PARAMS(N, T)
+# ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# define EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION_IMPL(MAX,N)<EXPAND_TEMPLATE_ARGUMENTS(N), BOOST_PP_ENUM_PARAMS(BOOST_PP_SUB(MAX,N), void_)>
+# else
+# define EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION_IMPL(MAX,N) <EXPAND_TEMPLATE_ARGUMENTS(N)>
+# endif
+# define EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(MAX,N)BOOST_PP_IF(BOOST_PP_EQUAL(MAX,N),DUMMY2,EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION_IMPL)(MAX,N)
+# define EXPAND_TEMPLATE_ARGUMENTS_BINARY(N,PRE,POST)BOOST_PP_ENUM_BINARY_PARAMS(N, PRE T, POST BOOST_PP_INTERCEPT)
+# define EXPAND_TEMPLATE_ARGUMENTS_CALL_PARAMS(N)BOOST_PP_ENUM_BINARY_PARAMS(N, typename call_traits<T, >::param_type _)
+# define EXPAND_PARAMETERS(N) BOOST_PP_ENUM_PARAMS(N, _)
+
+# define VARIADIC_TEMPLATE_A_IMPL(N) template<BOOST_PP_ENUM_PARAMS(N, typename A)>
+# define VARIADIC_TEMPLATE_A(N) BOOST_PP_IF(N,VARIADIC_TEMPLATE_A_IMPL,DUMMY1)(N)
+# define EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(N)BOOST_PP_ENUM_BINARY_PARAMS(N, A, BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY()) BOOST_PP_INTERCEPT)
+# define EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(N)BOOST_PP_ENUM_BINARY_PARAMS(N, A,BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()) BOOST_PP_INTERCEPT)
+# define EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(N)BOOST_PP_ENUM_BINARY_PARAMS(N, A, BOOST_FUSION_R_ELSE_LREF(BOOST_PP_EMPTY()) _)
+# define EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(N)BOOST_PP_ENUM_BINARY_PARAMS(N, A,BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()) _)
+# define EXPAND_PARAMETERS_A_IMPL(Z,N,__) BOOST_FUSION_FORWARD(BOOST_PP_CAT(A,N),BOOST_PP_CAT(_,N))
+# define EXPAND_PARAMETERS_A(N) BOOST_PP_ENUM(N,EXPAND_PARAMETERS_A_IMPL,_)
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
 #else
 # define VARIADIC_TEMPLATE_WITH_DEFAULT(MAX) template<typename... Arguments>
 # define VARIADIC_TEMPLATE(MAX) template<typename... Arguments>
-# define EXPAND_ARGUMENTS(MAX) Arguments...
+# define EXPAND_TEMPLATE_ARGUMENTS(MAX) Arguments...
 #endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -4,8 +4,14 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 template<BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PP_ITERATION(), typename T)>
- struct variadic_arguments_to_vector<BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PP_ITERATION(), T)>
+struct variadic_arguments_to_vector<
+ BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PP_ITERATION(), T)
+>
 {
 public:
- typedef mpl::vector<BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PP_ITERATION(), T)> type;
+ typedef
+ mpl::BOOST_PP_CAT(vector,BOOST_PP_ITERATION())<
+ BOOST_PP_ENUM_PARAMS_Z(1, BOOST_PP_ITERATION(), T)
+ >
+ type;
 };

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -9,15 +9,21 @@
 //workaround to get variadic template arguments into fixed-length template
 //argument list. We definitely need a boost config macro for this issue though.
 
+#include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
 #include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/mpl/vector.hpp>
+
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/mpl/vector/vector20.hpp>
+#include <boost/mpl/vector/vector30.hpp>
+#include <boost/mpl/vector/vector40.hpp>
+#include <boost/mpl/vector/vector50.hpp>
 
 namespace boost{namespace fusion
 {
 template<typename...> struct variadic_arguments_to_vector;
 #define BOOST_PP_ITERATION_PARAMS_1\
- (3, (0, BOOST_MPL_LIMIT_VECTOR_SIZE, <boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp>))
+ (3, (0, 50, <boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp>))
 #include BOOST_PP_ITERATE()
 
 }}

Deleted: sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/make_tuple.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/make_tuple.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,56 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_FUSION_TUPLE_DETAIL_PP_MAKE_TUPLE_HPP
-#define BOOST_FUSION_TUPLE_DETAIL_PP_MAKE_TUPLE_HPP
-#define FUSION_MAKE_TUPLE_10032005_0843
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/fusion/tuple/tuple.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- inline tuple<>
- make_tuple()
- {
- return tuple<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/tuple/make_tuple.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline tuple<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return tuple<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_expand.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_expand.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_expand.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -28,22 +28,9 @@
 
 #define N BOOST_PP_ITERATION()
 
-#if N == 1
- explicit
-#endif
- tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
     template <BOOST_PP_ENUM_PARAMS(N, typename U)>
     tuple(tuple<BOOST_PP_ENUM_PARAMS(N, U)> const& rhs)
       : base_type(rhs) {}
 
- template <BOOST_PP_ENUM_PARAMS(N, typename U)>
- tuple& operator=(tuple<BOOST_PP_ENUM_PARAMS(N, U)> const& rhs)
- {
- base_type::operator=(rhs);
- return *this;
- }
-
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/pp/tuple_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,49 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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 BOOST_FUSION_TUPLE_DETAIL_PP_TUPLE_TIE_HPP
-#define BOOST_FUSION_TUPLE_DETAIL_PP_TUPLE_TIE_HPP
-#define FUSION_TUPLE_TIE_10032005_0846
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/fusion/tuple/tuple.hpp>
-
-namespace boost { namespace fusion
-{
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/tuple/tuple_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline tuple<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return tuple<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,11 +6,12 @@
 #ifndef BOOST_FUSION_TUPLE_MAKE_TUPLE_HPP
 #define BOOST_FUSION_TUPLE_MAKE_TUPLE_HPP
 
-#include <boost/config.hpp>
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/tuple/detail/pp/make_tuple.hpp>
-#else
-# include <boost/fusion/tuple/detail/variadic_templates/make_tuple.hpp>
-#endif
+#include <boost/fusion/tuple/tuple.hpp>
+
+#define BOOST_FUSION_SEQ_NAME tuple
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -18,13 +18,19 @@
 #include <boost/fusion/adapted/std_pair.hpp>
 #include <boost/fusion/support/ref.hpp>
 
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#endif
+
 namespace boost { namespace fusion
 {
- VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_VECTOR_SIZE)
+ VARIADIC_TEMPLATE(FUSION_MAX_VECTOR_SIZE)
     struct tuple
- : vector<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)>
+ : vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)>
     {
- typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)> base_type;
+ typedef
+ vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)>
+ base_type;
 
         tuple()
         {}
@@ -34,18 +40,24 @@
           : base_type(static_cast<base_type COMBINATION>(other_tuple))\
         {}\
         \
- template <typename T1, typename T2>\
- tuple(std::pair<T1, T2> COMBINATION rhs)\
+ template <typename A1, typename A2>\
+ tuple(std::pair<A1, A2> COMBINATION rhs)\
           : base_type(sequence_assign(\
- static_cast<std::pair<T1, T2> COMBINATION>(rhs)))\
+ static_cast<std::pair<A1, A2> COMBINATION>(rhs)))\
         {}
 
         BOOST_FUSION_ALL_CV_REF_COMBINATIONS(TUPLE_CTOR,_)
 
-#undef LIST_CTOR
+#undef TUPLE_CTOR
 
 #ifdef BOOST_NO_VARIADIC_TEMPLATES
- #include <boost/fusion/tuple/detail/pp/tuple_expand.hpp>
+# define BOOST_FUSION_USE_BASE_TYPE
+# define BOOST_FUSION_SEQ_NAME tuple
+# define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# undef BOOST_FUSION_MAX_SEQ_SIZE
+# undef BOOST_FUSION_SEQ_NAME
+# undef BOOST_FUSION_USE_BASE_TYPE
 #else
         template <typename... OtherArguments>
         tuple(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
@@ -73,11 +85,20 @@
     {};
 
     template <int N, typename Tuple>
- inline typename result_of::at_c<BOOST_FUSION_R_ELSE_LREF(Tuple), N>::type
- get(BOOST_FUSION_R_ELSE_LREF(Tuple) tup)
+ inline typename result_of::at_c<BOOST_FUSION_R_ELSE_CLREF(Tuple), N>::type
+ get(BOOST_FUSION_R_ELSE_CLREF(Tuple) tuple)
+ {
+ return at_c<N>(tuple);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <int N, typename Tuple>
+ inline typename result_of::at_c<Tuple&, N>::type
+ get(Tuple& tuple)
     {
- return at_c<N>(tup);
+ return at_c<N>(tuple);
     }
+#endif
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -6,14 +6,14 @@
 #ifndef BOOST_FUSION_TUPLE_TUPLE_TIE_HPP
 #define BOOST_FUSION_TUPLE_TUPLE_TIE_HPP
 
-#include <boost/fusion/container/generation/ignore.hpp>
+#include <boost/fusion/tuple/tuple.hpp>
 
-#include <boost/config.hpp>
-
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
-# include <boost/fusion/tuple/detail/pp/tuple_tie.hpp>
-#else
-# include <boost/fusion/tuple/detail/variadic_templates/tuple_tie.hpp>
-#endif
+#define BOOST_FUSION_FUNCTION_NAME tie
+#define BOOST_FUSION_SEQ_NAME tuple
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/seq_tie.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+#undef BOOST_FUSION_FUNCTION_NAME
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -11,6 +11,7 @@
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_const.hpp>
 #include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace fusion { namespace detail
@@ -23,7 +24,7 @@
         static typename
             enable_if<
                 traits::is_view<T>
- , BOOST_FUSION_R_ELSE_LREF(OtherT)
+ , BOOST_FUSION_R_ELSE_CLREF(OtherT)
>::type
         get_init_type(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t)
         {
@@ -50,6 +51,16 @@
>::type
         type;
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef typename
+ mpl::if_<
+ traits::is_view<T>
+ , typename detail::add_lref<typename add_const<T>::type>::type
+ , type
+ >::type
+ call_param;
+#endif
+
 #define VIEW_STORAGE_CTOR(COMBINATION,_)\
         template<typename OtherT>\
         view_storage(view_storage<OtherT> COMBINATION storage)\
@@ -60,26 +71,26 @@
 
 #undef VIEW_STORAGE_CTOR
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ view_storage(call_param other_t)
+ : t(get_init_type(other_t))
+ {}
+#else
         template<typename OtherT>
- view_storage(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t)
- : t(get_init_type(BOOST_FUSION_FORWARD(OtherT,other_t)))
+ view_storage(OtherT&& other_t)
+ : t(get_init_type(std::forward<OtherT>(other_t)))
         {}
+#endif
 
         template<typename OtherViewStorage>
         view_storage&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherViewStorage) other_storage)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherViewStorage) other_storage)
         {
             t=BOOST_FUSION_FORWARD(OtherViewStorage,other_storage).t;
             return *this;
         }
 
         //TODO cschmidt: volatile?
- //typename detail::add_lref<type>::type
- //get()
- //{
- // return get(typename traits::is_view<T>::type());
- //}
-
         typename mpl::if_<traits::is_view<T>, type&, type>::type
         get() const
         {
@@ -87,18 +98,6 @@
         }
 
     private:
- //type&
- //get(mpl::true_ /*is_view*/)
- //{
- // return t;
- //}
-
- //type
- //get(mpl::false_ /*is_view*/)
- //{
- // return *t;
- //}
-
         type&
         get(mpl::true_ /*is_view*/)const
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -42,7 +42,8 @@
         typedef forward_traversal_tag category;
         typedef mpl::true_ is_view;
 
- typedef typename detail::view_storage<Seq>::type seq_type;
+ typedef detail::view_storage<Seq> storage_type;
+ typedef typename storage_type::type seq_type;
         typedef Pred pred_type;
 
 #define FILTER_VIEW_CTOR(COMBINATION,_)\
@@ -55,20 +56,26 @@
 
 #undef FILTER_VIEW_CTOR
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit filter_view(typename storage_type::call_param seq)
+ : seq(seq)
+ {}
+#else
         template<typename OtherSeq>
- explicit filter_view(BOOST_FUSION_R_ELSE_LREF(OtherSeq) other_seq)
+ explicit filter_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeq) other_seq)
           : seq(BOOST_FUSION_FORWARD(OtherSeq,other_seq))
         {}
+#endif
 
         template<typename OtherFilterView>
         filter_view&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherFilterView) other_view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherFilterView) other_view)
         {
             seq=BOOST_FUSION_FORWARD(OtherFilterView,other_view).seq;
             return *this;
         }
 
- detail::view_storage<Seq> seq;
+ storage_type seq;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -40,7 +40,7 @@
         typedef typename traits::category_of<First>::type category;
 
         template<typename OtherIteratorRange>
- iterator_range(BOOST_FUSION_R_ELSE_LREF(OtherIteratorRange) other_range)
+ iterator_range(BOOST_FUSION_R_ELSE_CLREF(OtherIteratorRange) other_range)
           : first(other_range.first)
           , last(other_range.last)
         {}
@@ -52,7 +52,7 @@
 
         template<typename OtherIteratorRange>
         iterator_range&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherIteratorRange) other_range)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIteratorRange) other_range)
         {
             first=other_range.first;
             last=other_range.last;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -43,8 +43,10 @@
         typedef forward_traversal_tag category;
         typedef mpl::true_ is_view;
 
- typedef typename detail::view_storage<Seq1>::type seq1_type;
- typedef typename detail::view_storage<Seq2>::type seq2_type;
+ typedef detail::view_storage<Seq1> storage1_type;
+ typedef typename storage1_type::type seq1_type;
+ typedef detail::view_storage<Seq2> storage2_type;
+ typedef typename storage2_type::type seq2_type;
 
         typedef typename
             mpl::plus<
@@ -54,29 +56,37 @@
         size;
 
         template<typename OtherJointView>
- joint_view(BOOST_FUSION_R_ELSE_LREF(OtherJointView) other_view)
+ joint_view(BOOST_FUSION_R_ELSE_CLREF(OtherJointView) other_view)
           : seq1(BOOST_FUSION_FORWARD(OtherJointView,other_view).seq1)
           , seq2(BOOST_FUSION_FORWARD(OtherJointView,other_view).seq2)
         {}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ joint_view(typename storage1_type::call_param seq1,
+ typename storage2_type::call_param seq2)
+ : seq1(seq1)
+ , seq2(seq2)
+ {}
+#else
         template<typename OtherSeq1, typename OtherSeq2>
- joint_view(BOOST_FUSION_R_ELSE_LREF(OtherSeq1) other_seq1,
- BOOST_FUSION_R_ELSE_LREF(OtherSeq2) other_seq2)
+ joint_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) other_seq1,
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) other_seq2)
           : seq1(BOOST_FUSION_FORWARD(OtherSeq1,other_seq1))
           , seq2(BOOST_FUSION_FORWARD(OtherSeq2,other_seq2))
         {}
+#endif
 
         template<typename OtherJointView>
         OtherJointView&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherJointView) other_view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherJointView) other_view)
         {
             seq1=BOOST_FUSION_FORWARD(OtherJointView,other_view).seq1;
             seq2=BOOST_FUSION_FORWARD(OtherJointView,other_view).seq2;
             return *this;
         }
 
- detail::view_storage<Seq1> seq1;
- detail::view_storage<Seq2> seq2;
+ storage1_type seq1;
+ storage2_type seq2;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -45,7 +45,8 @@
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::true_ is_view;
 
- typedef typename detail::view_storage<Seq>::type seq_type;
+ typedef detail::view_storage<Seq> storage_type;
+ typedef typename storage_type::type seq_type;
         typedef typename traits::category_of<seq_type>::type category;
         typedef typename result_of::size<seq_type>::type size;
 
@@ -65,14 +66,20 @@
 
 #undef REVERSE_VIEW_CTOR
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit reverse_view(typename storage_type::call_param seq)
+ : seq(seq)
+ {}
+#else
         template<typename OtherSeq>
- explicit reverse_view(BOOST_FUSION_R_ELSE_LREF(OtherSeq) other_seq)
- : seq(BOOST_FUSION_FORWARD(OtherSeq,other_seq))
+ explicit reverse_view(OtherSeq&& other_seq)
+ : seq(std::forward<OtherSeq>(other_seq))
         {}
+#endif
 
         template<typename OtherReverseView>
         OtherReverseView&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherReverseView) other_view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherReverseView) other_view)
         {
             seq=BOOST_FUSION_FORWARD(OtherReverseView,other_view).seq;
             return *this;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -16,7 +16,6 @@
 
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/int.hpp>
-#include <boost/utility/enable_if.hpp>
 
 #include <boost/fusion/view/single_view/detail/single_view_fwd.hpp>
 #include <boost/fusion/view/single_view/detail/single_view_iterator.hpp>
@@ -57,46 +56,43 @@
 
 #undef SINGLE_VIEW_CTOR
 
- template<typename SeqAssign>
- single_view(BOOST_FUSION_R_ELSE_LREF(SeqAssign) seq,
- typename enable_if<
- is_sequence_assign<BOOST_FUSION_R_ELSE_LREF(SeqAssign)>
- >::type* =NULL)
- : val(fusion::front(seq.get()))
- {}
-
         template<typename OtherT>
- explicit single_view(BOOST_FUSION_R_ELSE_CLREF(OtherT) val,
- typename disable_if<
- is_sequence_assign<BOOST_FUSION_R_ELSE_CLREF(OtherT)>
- >::type* =NULL)
+ explicit single_view(BOOST_FUSION_R_ELSE_CLREF(OtherT) val)
           : val(BOOST_FUSION_FORWARD(OtherT,val))
         {}
 
+#define SINGLE_VIEW_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ single_view(\
+ support::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : val(fusion::front(seq_assign.get()))\
+ {}
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(SINGLE_VIEW_ASSIGN_CTOR,_)
+
+#undef SINGLE_VIEW_ASSIGN_CTOR
+
         template<typename OtherT>
- typename
- disable_if<
- is_sequence_assign<BOOST_FUSION_R_ELSE_CLREF(OtherT)>
- , single_view&
- >::type
+ single_view&
         operator=(BOOST_FUSION_R_ELSE_CLREF(OtherT) val)
         {
             val=BOOST_FUSION_FORWARD(OtherT,val);
             return *this;
         }
 
- template<typename SeqAssign>
- typename
- enable_if<
- is_sequence_assign<BOOST_FUSION_R_ELSE_LREF(SeqAssign)>
- , single_view&
- >::type
- operator=(BOOST_FUSION_R_ELSE_LREF(SeqAssign) seq)
- {
- val=fusion::front(seq.get());
- return *this;
+#define SINGLE_VIEW_SEQ_ASSIGN(COMBINATION,_)\
+ template<typename SeqRef>\
+ single_view&\
+ operator=(support::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ {\
+ val=fusion::front(seq_assign.get());\
+ return *this;\
         }
 
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(SINGLE_VIEW_SEQ_ASSIGN,_)
+
+#undef SINGLE_VIEW_SEQ_ASSIGN
+
         value_type val;
     };
 

Deleted: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/apply_transform_result.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/apply_transform_result.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
+++ (empty file)
@@ -1,36 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2007 Dan Marsden
-
- 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 BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_APPLY_TRANSFORM_RESULT_HPP
-#define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_APPLY_TRANSFORM_RESULT_HPP
-
-#include <boost/fusion/support/result_of.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace detail
- {
- template <typename F>
- struct apply_transform_result
- {
- template <typename T0, typename T1 = void_>
- struct apply
- : support::result_of<F(T0, T1)>
- {};
-
- template <typename T0>
- struct apply<T0, void_>
- : support::result_of<F(T0)>
- {};
- };
- }
-}}
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -10,10 +10,7 @@
 #define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_AT_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/at.hpp>
-
-#include <boost/mpl/apply.hpp>
-
-#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
+#include <boost/fusion/support/result_of.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -29,14 +26,12 @@
             typedef typename detail::remove_reference<SeqRef>::type seq;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename seq::transform_type
- >
- , typename result_of::at<
- typename seq::seq_type
- , N
- >::type
+ >::type(
+ typename result_of::at<typename seq::seq_type, N>::type
+ )
>::type
             type;
 
@@ -57,18 +52,18 @@
             typedef typename detail::remove_reference<SeqRef>::type seq;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename seq::transform_type
- >
- , typename boost::fusion::result_of::at<
+ >::type(
+ typename boost::fusion::result_of::at<
                         typename seq::seq1_type
                       , N
>::type
                   , typename boost::fusion::result_of::at<
                         typename seq::seq2_type
                       , N
- >::type
+ >::type)
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -10,10 +10,7 @@
 
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/value_of.hpp>
-
-#include <boost/mpl/apply.hpp>
-
-#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
+#include <boost/fusion/support/result_of.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -31,15 +28,15 @@
                 detail::remove_reference<ItRef>::type
             it;
 
- //TODO: return only const
+ //TODO reference on deref
+ //TODO return only const
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename it::transform_type
- >
- , typename result_of::deref<
- typename it::first_type
- >::type
+ >::type(
+ typename result_of::deref<typename it::first_type>::type
+ )
>::type
             type;
 
@@ -61,16 +58,12 @@
             typedef typename detail::remove_reference<ItRef>::type it;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename it::transform_type
- >
- , typename result_of::deref<
- typename it::first1_type
- >::type
- , typename result_of::deref<
- typename it::first2_type
- >::type
+ >::type(
+ typename result_of::deref<typename it::first1_type>::type
+ , typename result_of::deref<typename it::first2_type>::type)
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -18,7 +18,7 @@
 
     template <typename First, typename FRef>
     struct transform_view_iterator
- : iterator_base<transform_view_iterator<First, FRef> >
+ : iterator_base<transform_view_iterator<First, FRef> >
     {
         //TODO !!!
         typedef FRef transform_type;
@@ -56,7 +56,7 @@
 
     template <typename First1, typename First2, typename FRef>
     struct transform_view_iterator2
- : iterator_base<transform_view_iterator2<First1, First2, FRef> >
+ : iterator_base<transform_view_iterator2<First1, First2, FRef> >
     {
         typedef First1 first1_type;
         typedef First2 first2_type;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -9,10 +9,8 @@
 #ifndef BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_VALUE_AT_IMPL_HPP
 #define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_VALUE_AT_IMPL_HPP
 
-#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
-
-#include <boost/mpl/apply.hpp>
+#include <boost/fusion/support/result_of.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -28,14 +26,14 @@
             typedef typename detail::remove_reference<SeqRef>::type seq;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename seq::transform_type
- >
- , typename boost::fusion::result_of::value_at<
+ >::type(
+ typename boost::fusion::result_of::value_at<
                         typename seq::seq_type
                       , N
- >::type
+ >::type)
>::type
             type;
         };
@@ -50,16 +48,16 @@
             typedef typename detail::remove_reference<SeqRef>::type seq;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename seq::transform_type
- >
- , typename boost::fusion::result_of::value_at<
+ >::type(
+ typename boost::fusion::result_of::value_at<
                         typename seq::seq1_type, N
>::type
                   , typename boost::fusion::result_of::value_at<
                         typename seq::seq2_type, N
- >::type
+ >::type)
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -8,9 +8,8 @@
 #ifndef BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_VALUE_OF_IMPL_HPP
 #define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_VALUE_OF_IMPL_HPP
 
-#include <boost/mpl/apply.hpp>
 #include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
+#include <boost/fusion/support/result_of.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {
@@ -27,13 +26,11 @@
             typedef typename detail::remove_reference<ItRef>::type it;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename it::transform_type
- >
- , typename result_of::value_of<
- typename it::first_type
- >::type
+ >::type(
+ typename result_of::value_of<typename it::first_type>::type)
>::type
             type;
         };
@@ -49,16 +46,12 @@
             typedef typename detail::remove_reference<ItRef>::type it;
 
             typedef typename
- mpl::apply<
- detail::apply_transform_result<
+ support::result_of<
+ typename support::get_func_base<
                         typename it::transform_type
- >
- , typename result_of::value_of<
- typename it::first1_type
- >::type
- , typename result_of::value_of<
- typename it::first2_type
- >::type
+ >::type(
+ typename result_of::value_of<typename it::first1_type>::type
+ , typename result_of::value_of<typename it::first2_type>::type)
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -58,8 +58,10 @@
         // result_of::size<Sequence1>,==,result_of::size<Sequence2>,
         // "both sequences must have the same length");
 
- typedef typename detail::view_storage<Seq1>::type seq1_type;
- typedef typename detail::view_storage<Seq2>::type seq2_type;
+ typedef detail::view_storage<Seq1> storage1_type;
+ typedef typename storage1_type::type seq1_type;
+ typedef detail::view_storage<Seq2> storage2_type;
+ typedef typename storage2_type::type seq2_type;
         typedef F transform_type;
 
         typedef transform_view2_tag fusion_tag;
@@ -77,24 +79,34 @@
         typedef typename result_of::size<seq1_type>::type size;
 
         template<typename OtherTransformView>
- transform_view(BOOST_FUSION_R_ELSE_LREF(OtherTransformView) other_view)
+ transform_view(BOOST_FUSION_R_ELSE_CLREF(OtherTransformView) other_view)
           : seq1(BOOST_FUSION_FORWARD(OtherTransformView,other_view).seq1)
           , seq2(BOOST_FUSION_FORWARD(OtherTransformView,other_view).seq2)
           , f(BOOST_FUSION_FORWARD(OtherTransformView,other_view).f)
         {}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ transform_view(typename storage1_type::call_param seq1,
+ typename storage2_type::call_param seq2,
+ F const& f)
+ : seq1(seq1)
+ , seq2(seq2)
+ , f(f)
+ {}
+#else
         template<typename OtherSeq1, typename OtherSeq2,typename OtherF>
- transform_view(BOOST_FUSION_R_ELSE_LREF(OtherSeq1) seq1,
- BOOST_FUSION_R_ELSE_LREF(OtherSeq2) seq2,
- BOOST_FUSION_R_ELSE_LREF(OtherF) f)
+ transform_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) seq1,
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) seq2,
+ BOOST_FUSION_R_ELSE_CLREF(OtherF) f)
           : seq1(BOOST_FUSION_FORWARD(OtherSeq1,seq1))
           , seq2(BOOST_FUSION_FORWARD(OtherSeq2,seq2))
           , f(BOOST_FUSION_FORWARD(OtherF,f))
         {}
+#endif
 
         template<typename OtherTransformView>
         OtherTransformView&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherTransformView) other_view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherTransformView) other_view)
         {
             seq1=BOOST_FUSION_FORWARD(OtherTransformView,other_view).seq1;
             seq2=BOOST_FUSION_FORWARD(OtherTransformView,other_view).seq2;
@@ -102,8 +114,8 @@
             return *this;
         }
 
- detail::view_storage<Seq1> seq1;
- detail::view_storage<Seq2> seq2;
+ storage1_type seq1;
+ storage2_type seq2;
         transform_type f;
     };
 
@@ -117,44 +129,45 @@
       : sequence_base<transform_view<Seq, F> >
 #endif
     {
- typedef typename
- mpl::if_<
- traits::is_view<Seq>
- , typename detail::remove_reference<Seq>::type
- , typename detail::add_lref<Seq>::type
- >::type
- seq_type;
- typedef typename traits::category_of<seq_type>::type category;
- typedef typename result_of::size<seq_type>::type size;
+ typedef detail::view_storage<Seq> storage_type;
+ typedef typename storage_type::type seq_type;
         typedef F transform_type;
 
+ typedef typename traits::category_of<seq_type>::type category;
+ typedef typename result_of::size<seq_type>::type size;
         typedef transform_view_tag fusion_tag;
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::true_ is_view;
 
         template<typename OtherTransformView>
- transform_view(BOOST_FUSION_R_ELSE_LREF(OtherTransformView) view)
+ transform_view(BOOST_FUSION_R_ELSE_CLREF(OtherTransformView) view)
           : seq(BOOST_FUSION_FORWARD(OtherTransformView,view).seq)
           , f(BOOST_FUSION_FORWARD(OtherTransformView,view).f)
         {}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ transform_view(typename storage_type::call_param seq,F const& f)
+ : seq(seq)
+ , f(f)
+ {}
+#else
         template<typename OtherSeq, typename OtherF>
- transform_view(BOOST_FUSION_R_ELSE_LREF(OtherSeq) seq,
- BOOST_FUSION_R_ELSE_LREF(OtherF) f)
- : seq(BOOST_FUSION_FORWARD(OtherSeq,seq))
- , f(BOOST_FUSION_FORWARD(OtherF,f))
+ transform_view(OtherSeq&& seq,OtherF&& f)
+ : seq(std::forward<OtherSeq>(seq))
+ , f(std::forward<OtherF>(f))
         {}
+#endif
 
         template<typename OtherTransformView>
         OtherTransformView&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherTransformView) view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherTransformView) view)
         {
             seq=BOOST_FUSION_FORWARD(OtherTransformView,view).seq;
             f=BOOST_FUSION_FORWARD(OtherTransformView,view).f;
             return *this;
         }
 
- detail::view_storage<Seq> seq;
+ storage_type seq;
         transform_type f;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -42,7 +42,7 @@
             typename result<poly_begin(BOOST_FUSION_R_ELSE_LREF(Seq))>::type
             operator()(BOOST_FUSION_R_ELSE_LREF(Seq) seq) const
             {
- return fusion::begin(BOOST_FUSION_FORWARD(Seq,seq));
+ return fusion::begin(seq);
             }
 
             unused_type const&

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -55,8 +55,7 @@
             typename result<endpoints(BOOST_FUSION_R_ELSE_LREF(Seq))>::type
             operator()(BOOST_FUSION_R_ELSE_LREF(Seq) seq) const
             {
- return fusion::advance<M>(
- fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ return fusion::advance<M>(fusion::begin(seq));
             }
 
             unused_type const&

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -28,12 +28,12 @@
             template<typename T>
             struct result;
 
- template<typename Self, typename Seq>
- struct result<Self(Seq)>
+ template<typename Self, typename SeqRef>
+ struct result<Self(SeqRef)>
               : mpl::eval_if<
- is_same<Seq, unused_type const&>
+ is_same<SeqRef, unused_type const&>
                   , mpl::identity<unused_type const&>
- , result_of::value_at<Seq, N>
+ , result_of::value_at<SeqRef, N>
>
             {};
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -157,13 +157,14 @@
 #undef ZIP_VIEW_CTOR
 
         template<typename OtherSeqs>
- explicit zip_view(BOOST_FUSION_R_ELSE_LREF(OtherSeqs) other_seqs)
- : seqs(sequence_assign(BOOST_FUSION_FORWARD(OtherSeqs,other_seqs)))
+ explicit zip_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeqs) other_seqs)
+ : seqs(fusion::sequence_assign(
+ BOOST_FUSION_FORWARD(OtherSeqs,other_seqs)))
         {}
 
         template<typename OtherZipView>
         zip_view&
- operator=(BOOST_FUSION_R_ELSE_LREF(OtherZipView) other_zip_view)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherZipView) other_zip_view)
         {
             seqs=BOOST_FUSION_FORWARD(OtherZipView,other_zip_view).seqs;
             return *this;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -11,89 +11,89 @@
 {
     test-suite fusion :
 
-# [ run algorithm/all.cpp : : : : ]
-# [ run algorithm/any.cpp : : : : ]
-# [ run algorithm/clear.cpp : : : : ]
-# [ run algorithm/count_if.cpp : : : : ]
-# [ run algorithm/count.cpp : : : : ]
-# [ run algorithm/erase_key.cpp : : : : ]
-# [ run algorithm/erase.cpp : : : : ]
-# [ run algorithm/filter_if.cpp : : : : ]
-# [ run algorithm/filter.cpp : : : : ]
-# [ run algorithm/find_if.cpp : : : : ]
-# [ run algorithm/find.cpp : : : : ]
-# [ run algorithm/fold.cpp : : : : ]
-# [ run algorithm/for_each.cpp : : : : ]
-# [ run algorithm/insert_range.cpp : : : : ]
-# [ run algorithm/insert.cpp : : : : ]
-# [ run algorithm/join.cpp : : : : ]
-# [ run algorithm/none.cpp : : : : ]
-# [ run algorithm/pop_back.cpp : : : : ]
-# [ run algorithm/pop_front.cpp : : : : ]
-# [ run algorithm/push_back.cpp : : : : ]
-# [ run algorithm/push_front.cpp : : : : ]
-# [ run algorithm/remove_if.cpp : : : : ]
-# [ run algorithm/remove.cpp : : : : ]
-# [ run algorithm/replace_if.cpp : : : : ]
-# [ run algorithm/replace.cpp : : : : ]
-# [ run algorithm/reverse.cpp : : : : ]
-# [ run algorithm/transform.cpp : : : : ]
+ [ run algorithm/all.cpp : : : : ]
+ [ run algorithm/any.cpp : : : : ]
+ [ run algorithm/clear.cpp : : : : ]
+ [ run algorithm/count_if.cpp : : : : ]
+ [ run algorithm/count.cpp : : : : ]
+ [ run algorithm/erase_key.cpp : : : : ]
+ [ run algorithm/erase.cpp : : : : ]
+ [ run algorithm/filter_if.cpp : : : : ]
+ [ run algorithm/filter.cpp : : : : ]
+ [ run algorithm/find_if.cpp : : : : ]
+ [ run algorithm/find.cpp : : : : ]
+ [ run algorithm/fold.cpp : : : : ]
+ [ run algorithm/for_each.cpp : : : : ]
+ [ run algorithm/insert_range.cpp : : : : ]
+ [ run algorithm/insert.cpp : : : : ]
+ [ run algorithm/join.cpp : : : : ]
+ [ run algorithm/none.cpp : : : : ]
+ [ run algorithm/pop_back.cpp : : : : ]
+ [ run algorithm/pop_front.cpp : : : : ]
+ [ run algorithm/push_back.cpp : : : : ]
+ [ run algorithm/push_front.cpp : : : : ]
+ [ run algorithm/remove_if.cpp : : : : ]
+ [ run algorithm/remove.cpp : : : : ]
+ [ run algorithm/replace_if.cpp : : : : ]
+ [ run algorithm/replace.cpp : : : : ]
+ [ run algorithm/reverse.cpp : : : : ]
+ [ run algorithm/transform.cpp : : : : ]
 # [ run algorithm/zip_ignore.cpp : : : : ]
 # [ run algorithm/zip.cpp : : : : ]
 # [ run algorithm/zip2.cpp : : : : ]
 
-# [ run sequence/adapt_struct.cpp : : : : ]
-# [ run sequence/adapt_assoc_struct.cpp : : : : ]
-# [ run sequence/array.cpp : : : : ]
-# [ run sequence/as_list.cpp : : : : ]
-# [ run sequence/as_map.cpp : : : : ]
-# [ run sequence/as_set.cpp : : : : ]
-# [ run sequence/as_vector.cpp : : : : ]
-# [ run sequence/boost_tuple.cpp : : : : ]
-# [ run sequence/cons.cpp : : : : ]
-# [ run sequence/deduce_sequence.cpp : : : : ]
-# [ run sequence/filter_view.cpp : : : : ]
-# [ run sequence/io.cpp : : : : ]
-# [ run sequence/iterator_range.cpp : : : : ]
-# [ run sequence/joint_view.cpp : : : : ]
-# [ run sequence/list_comparison.cpp : : : : ]
-# [ run sequence/list_construction.cpp : : : : ]
-# [ run sequence/list_copy.cpp : : : : ]
-# [ run sequence/list_iterator.cpp : : : : ]
-# [ run sequence/list_make.cpp : : : : ]
-# [ run sequence/list_misc.cpp : : : : ]
-# [ run sequence/list_mutate.cpp : : : : ]
-# [ run sequence/list_tie.cpp : : : : ]
-# [ run sequence/map_tie.cpp : : : : ]
-# [ run sequence/map.cpp : : : : ]
-# [ run sequence/reverse_view.cpp : : : : ]
-# [ run sequence/set.cpp : : : : ]
-# [ run sequence/single_view.cpp : : : : ]
-# [ run sequence/std_pair.cpp : : : : ]
-# [ run sequence/swap.cpp : : : : ]
-# [ run sequence/tr1_tuple_auto_conv.cpp : : : : ]
-# [ run sequence/transform_view.cpp : : : : ]
-# [ run sequence/tuple_comparison.cpp : : : : ]
-# [ run sequence/tuple_construction.cpp : : : : ]
-# [ run sequence/tuple_copy.cpp : : : : ]
-# [ run sequence/tuple_element.cpp : : : : ]
-# [ run sequence/tuple_make.cpp : : : : ]
-# [ run sequence/tuple_misc.cpp : : : : ]
-# [ run sequence/tuple_mutate.cpp : : : : ]
-# [ run sequence/tuple_tie.cpp : : : : ]
-# [ run sequence/vector_comparison.cpp : : : : ]
-# [ run sequence/vector_construction.cpp : : : : ]
-# [ run sequence/vector_copy.cpp : : : : ]
- [ run sequence/vector_iterator.cpp : : : : ]
-# [ run sequence/vector_make.cpp : : : : ]
-# [ run sequence/vector_misc.cpp : : : : ]
-# [ run sequence/vector_mutate.cpp : : : : ]
-# [ run sequence/vector_n.cpp : : : : ]
-# [ run sequence/vector_tie.cpp : : : : ]
-# [ run sequence/vector_value_at.cpp : : : : ]
-# [ run sequence/zip_view_ignore.cpp : : : : ]
-# [ run sequence/zip_view.cpp : : : : ]
-# [ run sequence/zip_view2.cpp : : : : ]
+ [ run sequence/adapt_struct.cpp : : : : ]
+ [ run sequence/adapt_assoc_struct.cpp : : : : ]
+ [ run sequence/array.cpp : : : : ]
+ [ run sequence/as_list.cpp : : : : ]
+ [ run sequence/as_map.cpp : : : : ]
+ [ run sequence/as_set.cpp : : : : ]
+ [ run sequence/as_vector.cpp : : : : ]
+ [ run sequence/boost_tuple.cpp : : : : ]
+ [ run sequence/cons.cpp : : : : ]
+ [ run sequence/deduce_sequence.cpp : : : : ]
+ [ run sequence/filter_view.cpp : : : : ]
+ [ run sequence/io.cpp : : : : ]
+ [ run sequence/iterator_range.cpp : : : : ]
+ [ run sequence/joint_view.cpp : : : : ]
+ [ run sequence/list_comparison.cpp : : : : ]
+ [ run sequence/list_construction.cpp : : : : ]
+ [ run sequence/list_copy.cpp : : : : ]
+ [ run sequence/list_iterator.cpp : : : : ]
+ [ run sequence/list_make.cpp : : : : ]
+ [ run sequence/list_misc.cpp : : : : ]
+ [ run sequence/list_mutate.cpp : : : : ]
+ [ run sequence/list_tie.cpp : : : : ]
+ [ run sequence/map_tie.cpp : : : : ]
+ [ run sequence/map.cpp : : : : ]
+ [ run sequence/reverse_view.cpp : : : : ]
+ [ run sequence/set.cpp : : : : ]
+ [ run sequence/single_view.cpp : : : : ]
+ [ run sequence/std_pair.cpp : : : : ]
+ [ run sequence/swap.cpp : : : : ]
+ [ run sequence/tr1_tuple_auto_conv.cpp : : : : ]
+ [ run sequence/transform_view.cpp : : : : ]
+ [ run sequence/tuple_comparison.cpp : : : : ]
+ [ run sequence/tuple_construction.cpp : : : : ]
+ [ run sequence/tuple_copy.cpp : : : : ]
+ [ run sequence/tuple_element.cpp : : : : ]
+ [ run sequence/tuple_make.cpp : : : : ]
+ [ run sequence/tuple_misc.cpp : : : : ]
+ [ run sequence/tuple_mutate.cpp : : : : ]
+ [ run sequence/tuple_tie.cpp : : : : ]
+ [ run sequence/vector_comparison.cpp : : : : ]
+ [ run sequence/vector_construction.cpp : : : : ]
+ [ run sequence/vector_copy.cpp : : : : ]
+ [ run sequence/vector_iterator.cpp : : : : ]
+ [ run sequence/vector_make.cpp : : : : ]
+ [ run sequence/vector_misc.cpp : : : : ]
+ [ run sequence/vector_mutate.cpp : : : : ]
+ [ run sequence/vector_n.cpp : : : : ]
+ [ run sequence/vector_tie.cpp : : : : ]
+ [ run sequence/vector_value_at.cpp : : : : ]
+ [ run sequence/zip_view_ignore.cpp : : : : ]
+ [ run sequence/zip_view.cpp : : : : ]
+ [ run sequence/zip_view2.cpp : : : : ]
 
 # [ run functional/fused_function_object.cpp : : : : ]
 # [ run functional/fused_procedure.cpp : : : : ]

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -50,7 +50,8 @@
         using boost::mpl::_;
 
         typedef vector<int, char, X, double> mpl_vec;
- BOOST_TEST((*find_if<is_same<_, X> >(mpl_vec()) == 12345));
+ //TODO!!!
+ BOOST_TEST((*boost::fusion::find_if<is_same<_, X> >(mpl_vec()) == 12345));
     }
 
     {
@@ -61,7 +62,7 @@
         using boost::mpl::_;
 
         typedef vector_c<int, 1, 2, 3, 4> mpl_vec;
- BOOST_TEST((*find_if<less<_, int_<3> > >(mpl_vec()) == 1));
+ BOOST_TEST((*boost::fusion::find_if<less<_, int_<3> > >(mpl_vec()) == 1));
     }
 
     return boost::report_errors();

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp 2009-07-26 15:54:51 EDT (Sun, 26 Jul 2009)
@@ -11,7 +11,9 @@
 #include <boost/fusion/support/is_sequence.hpp>
 #include <boost/fusion/mpl.hpp>
 
+#include <boost/mpl/push_back.hpp>
 #include <boost/mpl/push_front.hpp>
+#include <boost/mpl/size.hpp>
 #include <boost/mpl/equal.hpp>
 #include <boost/mpl/deref.hpp>
 #include <boost/mpl/back.hpp>


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