$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64385 - in sandbox/SOC/2010/phoenix3: boost/phoenix/statement libs/phoenix/test/boost_bind_compatibility libs/phoenix/test/statement
From: thom.heller_at_[hidden]
Date: 2010-07-27 09:06:39
Author: theller
Date: 2010-07-27 09:06:38 EDT (Tue, 27 Jul 2010)
New Revision: 64385
URL: http://svn.boost.org/trac/boost/changeset/64385
Log:
fixed switch (but not for gcc-4.2)
Text files modified: 
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp                                |    26 +++++++++-----------------              
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_cdecl_mf_test.cpp |     1 -                                       
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_rv_sp_test.cpp    |     2 +-                                      
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/statement/switch_tests.cpp                      |    39 +++++++++++---------------------------- 
   4 files changed, 21 insertions(+), 47 deletions(-)
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp	2010-07-27 09:06:38 EDT (Tue, 27 Jul 2010)
@@ -59,24 +59,13 @@
             struct result;
 
             template <typename This, typename Expr, typename State>
-            struct result<This(Expr const&, State&)>
-                : fusion::result_of::push_front<State, Expr>
+            struct result<This(Expr, State)>
+                : fusion::result_of::push_front<typename remove_const<typename remove_reference<State>::type>::type const, typename remove_const<typename remove_reference<Expr>::type>::type>
             {};
 
-            template <typename This, typename Expr, typename State>
-            struct result<This(Expr&, State&)>
-                : fusion::result_of::push_front<State, Expr>
-            {};
-
-            template <typename This, typename Expr, typename State>
-            struct result<This(Expr, State&)>
-                : fusion::result_of::push_front<State, Expr>
-            {};
-
-
             template <typename Expr, typename State>
-            typename fusion::result_of::push_front<State, Expr>::type
-            operator()(Expr const& expr, State& state)
+            typename fusion::result_of::push_front<typename remove_const<typename remove_reference<State>::type>::type const, typename remove_const<typename remove_reference<Expr>::type>::type>::type
+            operator()(Expr expr, State state) const
             {
                 return fusion::push_front(state, expr);
             }
@@ -203,8 +192,9 @@
         typename make_switch<
             Cond
           , typename fusion::result_of::as_vector<
+                    //typename switch_grammar::impl<Cases const&, fusion::vector0<>&,int>::result_type
                 typename boost::result_of<
-                    switch_grammar(Cases const&, fusion::vector0<> const&)
+                    switch_grammar(Cases const&, fusion::vector0<>&)
                 >::type
             >::type
         >::type
@@ -213,13 +203,15 @@
             BOOST_PROTO_ASSERT_MATCHES( cases, switch_grammar );
             typedef
                 typename fusion::result_of::as_vector<
+                    //typename switch_grammar::impl<Cases const&, fusion::vector0<>&,int>::result_type
                     typename boost::result_of<
                         switch_grammar(Cases const&, fusion::vector0<>&)
                     >::type
                 >::type
                 cases_type;
 
-            return make_switch<Cond, cases_type>()(cond, fusion::as_vector(switch_grammar()(cases, fusion::vector0<>())));
+            fusion::vector0<> v;
+            return make_switch<Cond, cases_type>()(cond, fusion::as_vector(switch_grammar()(cases, v)));
         }
 
         Cond const& cond;
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_cdecl_mf_test.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_cdecl_mf_test.cpp	(original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_cdecl_mf_test.cpp	2010-07-27 09:06:38 EDT (Tue, 27 Jul 2010)
@@ -58,7 +58,6 @@
 
     bind(&X::f0, &x)();
     bind(&X::f0, ref(x))();
-    bind(&X::f0, x)();
 
     bind(&X::g0, &x)();
     bind(&X::g0, x)();
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_rv_sp_test.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_rv_sp_test.cpp	(original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/boost_bind_compatibility/bind_rv_sp_test.cpp	2010-07-27 09:06:38 EDT (Tue, 27 Jul 2010)
@@ -40,7 +40,7 @@
     {
     }
 
-    int f()
+    int f() const
     {
         return v_;
     }
Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/statement/switch_tests.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/statement/switch_tests.cpp	(original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/statement/switch_tests.cpp	2010-07-27 09:06:38 EDT (Tue, 27 Jul 2010)
@@ -34,61 +34,44 @@
         switch_(_1)
         [
             // wierd case, why not just use if(...), but valid, nonetheless
-            //case_<4>(cout << val("<4>") << endl)
-            case_<4>(cout << ref("<4>") << endl)
+            case_<4>(cout << val("<4>") << endl)
         ]
     );
 
     cout << endl;
 
-    /*
     for_each(v.begin(), v.end(),
         switch_(_1)
         [
             // wierd case, but valid, nonetheless
-            //default_(cout << val("<any...>") << endl)
-            default_(cout << ref("<any...>") << endl)
+            default_(cout << val("<any...>") << endl)
         ]
     );
-    */
 
     cout << endl;
 
-    /*
     for_each(v.begin(), v.end(),
         switch_(_1)
         [
-            //case_<1>(cout << val("<1>") << endl),
-            case_<1>(cout << ref("<1>") << endl),
-            //case_<2>(cout << val("<2>") << endl),
-            case_<2>(cout << ref("<2>") << endl),
-            //case_<3>(cout << val("<3>") << endl)//,
-            case_<3>(cout << ref("<3>") << endl),
-            //case_<4>(cout << val("<4>") << endl)
-            case_<4>(cout << ref("<4>") << endl)
+            case_<1>(cout << val("<1>") << endl),
+            case_<2>(cout << val("<2>") << endl),
+            case_<3>(cout << val("<3>") << endl),
+            case_<4>(cout << val("<4>") << endl)
         ]
     );
-    */
 
     cout << endl;
 
-    /*
     for_each(v.begin(), v.end(),
         switch_(_1)
         [
-            //case_<1>(cout << val("<1>") << endl),
-            case_<1>(cout << ref("<1>") << endl),
-            //case_<2>(cout << val("<2>") << endl),
-            case_<2>(cout << ref("<2>") << endl),
-            //case_<3>(cout << val("<3>") << endl),
-            case_<3>(cout << ref("<3>") << endl),
-            //case_<4>(cout << val("<4>") << endl),
-            case_<4>(cout << ref("<4>") << endl),
-            //default_(cout << val("<over 4>") << endl)
-            default_(cout << ref("<over 4>") << endl)
+            case_<1>(cout << val("<1>") << endl),
+            case_<2>(cout << val("<2>") << endl),
+            case_<3>(cout << val("<3>") << endl),
+            case_<4>(cout << val("<4>") << endl),
+            default_(cout << val("<over 4>") << endl)
         ]
     );
-    */
 
     return boost::report_errors();
 }