$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: hartmut.kaiser_at_[hidden]
Date: 2008-05-09 10:48:52
Author: hkaiser
Date: 2008-05-09 10:48:51 EDT (Fri, 09 May 2008)
New Revision: 45251
URL: http://svn.boost.org/trac/boost/changeset/45251
Log:
Spirit: Fixed gcc compilation problems.
Text files modified: 
   trunk/boost/spirit/home/karma/action/action.hpp            |     4 +-                                      
   trunk/boost/spirit/home/qi/action/action.hpp               |     4 ++                                      
   trunk/boost/spirit/home/support/detail/action_dispatch.hpp |    44 ++++++++++++++++++++--------------------
   3 files changed, 27 insertions(+), 25 deletions(-)
Modified: trunk/boost/spirit/home/karma/action/action.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/action/action.hpp	(original)
+++ trunk/boost/spirit/home/karma/action/action.hpp	2008-05-09 10:48:51 EDT (Fri, 09 May 2008)
@@ -68,8 +68,8 @@
             // fail parsing.
             // call the function, passing the attribute, the context.
             // The client can return false to fail parsing.
-            bool pass = spirit::detail::action_dispatch<is_sequence>(
-                spirit::right(component), p, ctx);
+            bool pass = spirit::detail::action_dispatch(
+                spirit::right(component), p, ctx, is_sequence());
 
             return pass &&
                 director::generate(spirit::left(component), sink, ctx, d, p);
Modified: trunk/boost/spirit/home/qi/action/action.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/action/action.hpp	(original)
+++ trunk/boost/spirit/home/qi/action/action.hpp	2008-05-09 10:48:51 EDT (Fri, 09 May 2008)
@@ -12,6 +12,7 @@
 #include <boost/spirit/home/support/attribute_of.hpp>
 #include <boost/spirit/home/support/detail/action_dispatch.hpp>
 #include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/type_traits/remove_const.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -40,7 +41,8 @@
             // before calling detail::action_dispatch whereby
             // disallowing mutability of the attribute in semantic
             // actions.
-            return spirit::detail::action_dispatch<mpl::true_>(f, attr, context);
+            return spirit::detail::action_dispatch(f, attr, context, 
+                mpl::true_());
         }
 
         template <
Modified: trunk/boost/spirit/home/support/detail/action_dispatch.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/action_dispatch.hpp	(original)
+++ trunk/boost/spirit/home/support/detail/action_dispatch.hpp	2008-05-09 10:48:51 EDT (Fri, 09 May 2008)
@@ -15,8 +15,8 @@
 namespace boost { namespace spirit { namespace detail
 {
     // general handler for everything not explicitly specialized below
-    template <typename Pass, typename F, typename Attribute, typename Context>
-    bool action_dispatch(F const& f, Attribute& attr, Context& context)
+    template <typename F, typename Attribute, typename Context, typename Pass>
+    bool action_dispatch(F const& f, Attribute& attr, Context& context, Pass&)
     {
         bool pass = true;
         f(attr, context, pass);
@@ -29,7 +29,7 @@
     // wrap any non-fusion sequence into a fusion sequence (done by pass_value)
     // and pass through any fusion sequence.
     template <typename Eval, typename Attribute, typename Context>
-    bool action_dispatch_impl(phoenix::actor<Eval> const& f
+    bool action_dispatch(phoenix::actor<Eval> const& f
       , Attribute& attr, Context& context, mpl::true_)
     {
         bool pass = true;
@@ -42,7 +42,7 @@
     // has to be treated as being a single value in any case (even if it 
     // actually already is a fusion sequence on its own).
     template <typename Eval, typename Attribute, typename Context>
-    bool action_dispatch_impl(phoenix::actor<Eval> const& f
+    bool action_dispatch(phoenix::actor<Eval> const& f
       , Attribute& attr, Context& context, mpl::false_)
     {
         bool pass = true;
@@ -50,47 +50,47 @@
         return pass;
     }
 
-    template <typename IsSequence
-        , typename Eval, typename Attribute, typename Context>
-    bool action_dispatch(phoenix::actor<Eval> const& f
-      , Attribute& attr, Context& context)
-    {
-        return action_dispatch_impl(f, attr, context, IsSequence());
-    }
+//     template <typename Eval, typename Attribute, typename Context,
+//         typename IsSequence>
+//     bool action_dispatch(phoenix::actor<Eval> const& f
+//       , Attribute& attr, Context& context, IsSe&)
+//     {
+//         return action_dispatch_impl(f, attr, context, IsSequence());
+//     }
 
     // specializations for plain function pointers taking a different number of
     // arguments
-    template <typename Pass, typename RT, typename A0, typename A1, typename A2
-      , typename Attribute, typename Context>
+    template <typename RT, typename A0, typename A1, typename A2
+      , typename Attribute, typename Context, typename Pass>
     bool action_dispatch(RT(*f)(A0, A1, A2)
-      , Attribute& attr, Context& context)
+      , Attribute& attr, Context& context, Pass&)
     {
         bool pass = true;
         f(attr, context, pass);
         return pass;
     }
 
-    template <typename Pass, typename RT, typename A0, typename A1
-      , typename Attribute, typename Context>
+    template <typename RT, typename A0, typename A1
+      , typename Attribute, typename Context, typename Pass>
     bool action_dispatch(RT(*f)(A0, A1)
-      , Attribute& attr, Context& context)
+      , Attribute& attr, Context& context, Pass&)
     {
         f(attr, context);
         return true;
     }
 
-    template <typename Pass, typename RT, typename A0
-      , typename Attribute, typename Context>
+    template <typename RT, typename A0
+      , typename Attribute, typename Context, typename Pass>
     bool action_dispatch(RT(*f)(A0)
-      , Attribute& attr, Context&)
+      , Attribute& attr, Context&, Pass&)
     {
         f(attr);
         return true;
     }
 
-    template <typename Pass, typename RT, typename Attribute, typename Context>
+    template <typename RT, typename Attribute, typename Context, typename Pass>
     bool action_dispatch(RT(*f)()
-      , Attribute&, Context&)
+      , Attribute&, Context&, Pass&)
     {
         f();
         return true;