$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54694 - in sandbox/SOC/2009/fusion: boost/fusion/algorithm/query boost/fusion/algorithm/transformation boost/fusion/view/detail boost/fusion/view/transform_view/detail libs/fusion/test/algorithm
From: mr.chr.schmidt_at_[hidden]
Date: 2009-07-05 19:14:12
Author: cschmidt
Date: 2009-07-05 19:14:09 EDT (Sun, 05 Jul 2009)
New Revision: 54694
URL: http://svn.boost.org/trac/boost/changeset/54694
Log:
non-const transformation funcs
Text files modified: 
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp                  |     5 ++++-                                   
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp        |     8 ++++----                                
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp    |    17 ++++++++++-------                       
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp       |     8 +++-----                                
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp    |     4 +++-                                    
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp       |    11 ++++++-----                             
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp |    16 +++++++---------                        
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp         |     4 +++-                                    
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp     |    10 ++++++----                              
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp    |    10 ++++++----                              
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp    |    16 +++++++++++-----                        
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp   |    34 ++++++++++++++++++++++------------      
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp       |     9 +++++----                               
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp    |    12 ++++++------                            
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp      |    37 +++++++------------------------------   
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp   |    35 +++--------------------------------     
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp      |     7 ++++---                                 
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp    |    40 ++++++++++++++++++++++++++++++----------
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp              |    38 +++++++++++++++++++-------------------  
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp |     1 +                                       
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp                    |     2 +-                                      
   21 files changed, 161 insertions(+), 163 deletions(-)
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -46,7 +46,10 @@
         template <typename Seq, typename T>
         struct find<Seq, T, true>
         {
-            typedef detail::assoc_find<Seq, T> filter;
+            typedef
+                detail::assoc_find<typename detail::add_lref<Seq>::type, T>
+            filter;
+
             typedef typename filter::type type;
         };
     }
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -113,10 +113,10 @@
               , First const&
               , Last const&
             >
-        result_of;
-        typedef typename result_of::left_type left_type;
-        typedef typename result_of::right_type right_type;
-        typedef typename result_of::type result_type;
+        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(
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -8,8 +8,8 @@
 #ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
 #define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
 
-#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
 #include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
 #include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
@@ -19,7 +19,13 @@
         template <typename Seq, typename Key>
         struct erase_key
         {
-            typedef typename detail::assoc_find<Seq, Key> gen;
+            typedef
+                detail::assoc_find<
+                    typename detail::add_lref<Seq>::type
+                  , Key
+                >
+            gen;
+
             typedef typename
                 erase<
                     Seq
@@ -34,11 +40,8 @@
         result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key>::type
     erase_key(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        typedef typename
-            result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key>::gen
-        gen;
-
-        return erase(BOOST_FUSION_FORWARD(Seq,seq), gen::call(seq));
+        typedef result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key> result;
+        return erase(BOOST_FUSION_FORWARD(Seq,seq), result::gen::call(seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -30,11 +30,9 @@
     inline typename result_of::filter<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type
     filter(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        return
-            filter_view<
-                BOOST_FUSION_R_ELSE_LREF(Seq)
-              , is_same<mpl::_, T>
-            >(BOOST_FUSION_FORWARD(Seq,seq));
+        return typename
+            result_of::filter<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type(
+                BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -26,7 +26,9 @@
         result_of::filter_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type
     filter_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        return filter_view<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>(seq);
+        return typename
+            result_of::filter_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type(
+                BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -21,10 +21,10 @@
           : insert_range<
                 Seq
               , Pos
-              //TODO cschmidt!!!
-              , /*BOOST_FUSION_R_ELSE_CLREF(*/
-                      single_view<typename detail::as_fusion_element<T>::type>//)
-                  const&
+                //TODO cschmidt!!!
+              , BOOST_FUSION_R_ELSE_CLREF(
+                      single_view<typename detail::as_fusion_element<T>::type>)
+
             >
         {
         };
@@ -41,7 +41,8 @@
             Pos const& pos,
             BOOST_FUSION_R_ELSE_LREF(T) x)
     {
-        return insert_range(BOOST_FUSION_FORWARD(Seq,seq)
+        return insert_range(
+                  BOOST_FUSION_FORWARD(Seq,seq)
                 , pos
                 , make_single_view(BOOST_FUSION_FORWARD(T,x)));
     }
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -22,12 +22,11 @@
         template <typename Seq, typename Pos, typename Range>
         struct insert_range
         {
-            typedef Pos pos_type;
             typedef typename result_of::begin<Seq>::type first_type;
             typedef typename result_of::end<Seq>::type last_type;
 
-            typedef iterator_range<first_type, pos_type> left_type;
-            typedef iterator_range<pos_type, last_type> right_type;
+            typedef iterator_range<first_type, Pos> left_type;
+            typedef iterator_range<Pos, last_type> right_type;
             typedef joint_view<left_type, Range> left_insert_type;
             typedef joint_view<left_insert_type, right_type> type;
         };
@@ -50,13 +49,12 @@
               , Pos const&
               , BOOST_FUSION_R_ELSE_LREF(Range)
             >
-        result_of;
-        typedef typename result_of::left_type left_type;
-        typedef typename result_of::right_type right_type;
-        typedef typename result_of::left_insert_type left_insert_type;
-        typedef typename result_of::type result;
+        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 result(
+        return typename result::type(
                 left_insert_type(
                     left_type(
                         fusion::begin(seq),
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -35,7 +35,9 @@
             result_of::join<
                 BOOST_FUSION_R_ELSE_LREF(Lhs)
               , BOOST_FUSION_R_ELSE_LREF(Rhs)
-            >::type(lhs,rhs);
+            >::type(
+                    BOOST_FUSION_FORWARD(Lhs,lhs)
+                  , BOOST_FUSION_FORWARD(Rhs,rhs));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -32,11 +32,13 @@
     }
 
     template <typename Seq>
-    inline typename result_of::pop_back<Seq const&>::type
-    pop_back(Seq const& seq)
+    inline typename result_of::pop_back<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
+    pop_back(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        typedef typename result_of::pop_back<Seq const&>::type result;
-        return result(fusion::begin(seq), fusion::prior(fusion::end(seq)));
+        return typename
+            result_of::pop_back<BOOST_FUSION_R_ELSE_LREF(Seq)>::type(
+                    fusion::begin(seq)
+                  , fusion::prior(fusion::end(seq)));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -32,11 +32,13 @@
     }
 
     template <typename Seq>
-    inline typename result_of::pop_front<Seq const&>::type
-    pop_front(Seq const& seq)
+    inline typename result_of::pop_front<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
+    pop_front(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        typedef typename result_of::pop_front<Seq const&>::type result;
-        return result(fusion::next(fusion::begin(seq)), fusion::end(seq));
+        return typename
+            result_of::pop_front<
+                BOOST_FUSION_R_ELSE_LREF(Seq)
+            >::type(fusion::next(fusion::begin(seq)), fusion::end(seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -30,12 +30,18 @@
     }
 
     template <typename Seq, typename T>
-    inline typename result_of::push_back<Seq const&, T const&>::type
-    push_back(Seq const& seq, T const& x)
+    inline typename
+        result_of::push_back<
+            BOOST_FUSION_R_ELSE_LREF(Seq)
+          , BOOST_FUSION_R_ELSE_CLREF(T)
+        >::type
+    push_back(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
-        typedef result_of::push_back<Seq const&, T const&> gen;
-
-        return typename gen::type(seq, x);
+        return typename
+            result_of::push_back<
+                BOOST_FUSION_R_ELSE_LREF(Seq)
+              , BOOST_FUSION_R_ELSE_CLREF(T)
+            >::type(BOOST_FUSION_FORWARD(Seq,seq), BOOST_FUSION_FORWARD(T,x));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -19,23 +19,33 @@
         template <typename Seq, typename T>
         struct push_front
         {
-            typedef fusion::single_view<
-                typename detail::as_fusion_element<T>::type
-            > single_view;
-
-            typedef joint_view<single_view const, Seq> type;
+            //TODO cschmidt: move as_fusion_element inside single_view
+            typedef
+                joint_view<
+                    fusion::single_view<
+                        typename detail::as_fusion_element<T>::type
+                    >
+                  , typename detail::add_lref<Seq>::type
+                >
+            type;
         };
     }
 
     template <typename Seq, typename T>
-    inline typename result_of::push_front<Seq const&, T>::type
-    push_front(Seq const& seq, T const& x)
+    inline typename
+        result_of::push_front<
+            BOOST_FUSION_R_ELSE_LREF(Seq)
+          , BOOST_FUSION_R_ELSE_CLREF(T)
+        >::type
+    push_front(
+            BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+            BOOST_FUSION_R_ELSE_CLREF(T) x)
     {
-        typedef typename result_of::push_front<Seq const&, T> push_front;
-        typedef typename push_front::single_view single_view; 
-        typedef typename push_front::type result; 
-        single_view x_(x);
-        return result(x_, seq);
+        return typename
+            result_of::push_front<
+                BOOST_FUSION_R_ELSE_LREF(Seq)
+              , BOOST_FUSION_R_ELSE_CLREF(T)
+            >::type(BOOST_FUSION_FORWARD(T,x), BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -26,11 +26,12 @@
     }
 
     template <typename T, typename Seq>
-    inline typename result_of::remove<Seq const&, T>::type
-    remove(Seq const& seq)
+    inline typename result_of::remove<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type
+    remove(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        typedef typename result_of::remove<Seq const&, T>::type result_type;
-        return result_type(seq);
+        return typename
+            result_of::remove<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type(
+                BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -23,13 +23,13 @@
     }
 
     template <typename Pred, typename Seq>
-    inline typename result_of::remove_if<Seq const&, Pred>::type
-    remove_if(Seq const& seq)
+    inline typename
+        result_of::remove_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type
+    remove_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        typedef typename
-            result_of::remove_if<Seq const&, Pred>::type
-        result_type;
-        return result_type(seq);
+        return typename
+            result_of::remove_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type(
+                BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -39,24 +39,24 @@
     inline typename
         result_of::replace<
             BOOST_FUSION_R_ELSE_LREF(Seq)
-          , BOOST_FUSION_R_ELSE_LREF(OldValue)
-          , BOOST_FUSION_R_ELSE_LREF(NewValue)
+          , BOOST_FUSION_R_ELSE_CLREF(OldValue)
+          , BOOST_FUSION_R_ELSE_CLREF(NewValue)
         >::type
     replace(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
-            BOOST_FUSION_R_ELSE_LREF(OldValue) old_value,
-            BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
+            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_LREF(OldValue)
-              , BOOST_FUSION_R_ELSE_LREF(NewValue)
+              , BOOST_FUSION_R_ELSE_CLREF(OldValue)
+              , BOOST_FUSION_R_ELSE_CLREF(NewValue)
             >::type
         type;
         typedef
             detail::replacer<
                 typename detail::as_fusion_element<
-                    BOOST_FUSION_R_ELSE_LREF(OldValue)
+                    BOOST_FUSION_R_ELSE_CLREF(OldValue)
                 >::type
             >
         replacer;
@@ -66,29 +66,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&, T>::type
-    replace(Seq& seq,
-            OldValue const& old_value,
-            NewValue const& new_value)
-    {
-        typedef typename
-            result_of::replace<
-                Seq&
-              , NewValue const&
-            >::type
-        type;
-        typedef
-            detail::replacer<
-                typename detail::as_fusion_element<OldValue const&>::type
-            >
-        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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -49,17 +49,17 @@
     inline typename result_of::replace_if<
         BOOST_FUSION_R_ELSE_LREF(Seq)
       , BOOST_FUSION_R_ELSE_LREF(F)
-      , BOOST_FUSION_R_ELSE_LREF(NewValue)
+      , BOOST_FUSION_R_ELSE_CLREF(NewValue)
     >::type
     replace_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
             BOOST_FUSION_R_ELSE_LREF(F) pred,
-            BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
+            BOOST_FUSION_R_ELSE_CLREF(NewValue) new_value)
     {
         typedef typename
             result_of::replace_if<
                 BOOST_FUSION_R_ELSE_LREF(Seq)
               , BOOST_FUSION_R_ELSE_LREF(F)
-              , BOOST_FUSION_R_ELSE_LREF(NewValue)
+              , BOOST_FUSION_R_ELSE_CLREF(NewValue)
             >
         result;
 
@@ -67,35 +67,6 @@
                 typename result::replacer(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&
-      , NewValue const&
-    >::type
-    replace_if(Seq& seq,
-            F& pred,
-            NewValue const& new_value)
-    {
-        typedef typename
-            result_of::replace_if<
-                Seq&
-              , F&
-              , NewValue const&
-            >::type
-        type;
-        typedef
-            detail::replacer_if<
-                typename detail::as_fusion_element<F&>::type
-              , typename detail::as_fusion_element<NewValue const&>::type
-            >
-        replacer;
-
-        return type(seq, 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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -22,10 +22,11 @@
     }
 
     template <typename Seq>
-    inline reverse_view<Seq const&>
-    reverse(Seq const& view)
+    inline reverse_view<BOOST_FUSION_R_ELSE_LREF(Seq)>
+    reverse(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
-        return reverse_view<Seq const&>(view);
+        return reverse_view<BOOST_FUSION_R_ELSE_LREF(Seq)>(
+                BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -34,21 +34,41 @@
     }
 
     template <typename Seq, typename F>
-    inline typename result_of::transform<Seq const&, F>::type
-    transform(Seq const& seq, F f)
+    inline typename
+        result_of::transform<
+            BOOST_FUSION_R_ELSE_LREF(Seq)
+          , BOOST_FUSION_R_ELSE_LREF(F)
+        >::type
+    transform(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
     {
-        return typename result_of::transform<Seq const&, F>::type(seq, f);
+        return typename
+            result_of::transform<
+                BOOST_FUSION_R_ELSE_LREF(Seq)
+              , BOOST_FUSION_R_ELSE_LREF(F)
+            >::type(BOOST_FUSION_FORWARD(Seq,seq), BOOST_FUSION_FORWARD(F,f));
     }
 
     template <typename Seq1, typename Seq2, typename F>
-    inline typename result_of::transform<Seq1 const&, Seq2 const&, F>::type
-    transform(Seq1 const& seq1, Seq2 const& seq2, F 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)
     {
-        typedef typename
-            result_of::transform<Seq1 const&, Seq2 const&, F>::type
-        result;
-
-        return result(seq1, seq2, 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));
     }
 }}
 
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -74,32 +74,32 @@
         }
 
         //TODO cschmidt: volatile?
-        typename detail::add_lref<type>::type
-        get()
-        {
-            return get(typename traits::is_view<T>::type());
-        }
+        //typename detail::add_lref<type>::type
+        //get()
+        //{
+        //    return get(typename traits::is_view<T>::type());
+        //}
 
-        typename mpl::if_<traits::is_view<T>, type const&, type>::type
+        typename mpl::if_<traits::is_view<T>, type&, type>::type
         get() const
         {
             return get(typename traits::is_view<T>::type());
         }
 
     private:
-        type&
-        get(mpl::true_ /*is_view*/)
-        {
-            return t;
-        }
+        //type&
+        //get(mpl::true_ /*is_view*/)
+        //{
+        //    return t;
+        //}
+
+        //type
+        //get(mpl::false_ /*is_view*/)
+        //{
+        //    return *t;
+        //}
 
-        type
-        get(mpl::false_ /*is_view*/)
-        {
-            return *t;
-        }
-
-        type const&
+        type&
         get(mpl::true_ /*is_view*/)const
         {
             return t;
@@ -112,7 +112,7 @@
         }
 
         typedef typename detail::remove_reference<T>::type non_ref_t;
-        typename
+        mutable typename
             mpl::if_<traits::is_view<T>, non_ref_t, non_ref_t*>::type
         t;
     };
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-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -34,6 +34,7 @@
                     detail::remove_reference<ItRef>::type
                 it;
 
+                //TODO: return only const
                 typedef typename
                     mpl::apply<
                         detail::apply_transform_result<
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp	(original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp	2009-07-05 19:14:09 EDT (Sun, 05 Jul 2009)
@@ -37,9 +37,9 @@
     template <typename T, typename State>
     struct result<add_ints_only(T,State)>
     {
-        typedef typename boost::fusion::detail::identity<State>::type type;
         //TODO cschmidt: remove_reference does not support rvalue refs yet,
         //therefore we use the internal function of fusion!
+        typedef typename boost::fusion::detail::identity<State>::type type;
         //typedef typename boost::remove_const<
         //    typename boost::remove_reference<State>::type>::type type;
     };