$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r61123 - trunk/boost/spirit/home/support
From: hartmut.kaiser_at_[hidden]
Date: 2010-04-07 09:16:54
Author: hkaiser
Date: 2010-04-07 09:16:53 EDT (Wed, 07 Apr 2010)
New Revision: 61123
URL: http://svn.boost.org/trac/boost/changeset/61123
Log:
Spirit: fixing attribute transformation ambiguity
Text files modified: 
   trunk/boost/spirit/home/support/attributes.hpp |    30 ++++++++++++++++++++----------          
   1 files changed, 20 insertions(+), 10 deletions(-)
Modified: trunk/boost/spirit/home/support/attributes.hpp
==============================================================================
--- trunk/boost/spirit/home/support/attributes.hpp	(original)
+++ trunk/boost/spirit/home/support/attributes.hpp	2010-04-07 09:16:53 EDT (Wed, 07 Apr 2010)
@@ -520,6 +520,16 @@
         static void fail(Exposed&) {}
     };
 
+    // handle case where no transformation is required as the types are the same
+    template <typename Attribute>
+    struct default_transform_attribute<Attribute, Attribute>
+    {
+        typedef Attribute& type;
+        static Attribute& pre(Attribute& val) { return val; }
+        static void post(Attribute&, Attribute const&) {}
+        static void fail(Attribute&) {}
+    };
+
     template <typename Exposed, typename Transformed>
     struct proxy_transform_attribute
     {
@@ -532,6 +542,16 @@
         static void fail(Exposed&) {}
     };
 
+    // handle case where no transformation is required as the types are the same
+    template <typename Attribute>
+    struct proxy_transform_attribute<Attribute, Attribute>
+    {
+        typedef Attribute& type;
+        static Attribute& pre(Attribute& val) { return val; }
+        static void post(Attribute&, Attribute const&) {}
+        static void fail(Attribute&) {}
+    };
+
     template <typename Exposed, typename Transformed, typename Enable/* = void*/>
     struct transform_attribute
       : default_transform_attribute<Exposed, Transformed> {};
@@ -573,16 +593,6 @@
         }
     };
 
-    // handle case where no transformation is required as the types are the same
-    template <typename Attribute>
-    struct transform_attribute<Attribute, Attribute>
-    {
-        typedef Attribute& type;
-        static Attribute& pre(Attribute& val) { return val; }
-        static void post(Attribute&, Attribute const&) {}
-        static void fail(Attribute&) {}
-    };
-
     template <typename Attribute>
     struct transform_attribute<Attribute const, Attribute>
     {