$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r58971 - in trunk/boost/spirit/home: karma/stream/detail qi/stream/detail
From: hartmut.kaiser_at_[hidden]
Date: 2010-01-13 08:23:27
Author: hkaiser
Date: 2010-01-13 08:23:25 EST (Wed, 13 Jan 2010)
New Revision: 58971
URL: http://svn.boost.org/trac/boost/changeset/58971
Log:
Spirit: reformulating static assertion
Text files modified: 
   trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp |    12 ++++++------                            
   trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp     |    12 ++++++------                            
   2 files changed, 12 insertions(+), 12 deletions(-)
Modified: trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp	(original)
+++ trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp	2010-01-13 08:23:25 EST (Wed, 13 Jan 2010)
@@ -25,6 +25,12 @@
       , typename Delimiter = unused_type, typename Attribute = unused_type>
     struct format_manip 
     {
+        // This assertion makes sure we don't hit the only code path which is 
+        // not implemented (because it isn't needed), where both, the 
+        // expression and the attribute need to be held as a copy.
+        BOOST_SPIRIT_ASSERT_MSG(!CopyExpr::value || !CopyAttr::value
+            , error_invalid_should_not_happen, ());
+
         format_manip(Expr const& xpr, Delimiter const& d, Attribute const& a) 
           : expr(xpr), delim(d), pre(delimit_flag::dont_predelimit), attr(a) {}
 
@@ -82,12 +88,6 @@
         format_manip& operator= (format_manip const&);
     };
 
-    template <typename Expr, typename Delimiter, typename Attribute>
-    struct format_manip<Expr, mpl::true_, mpl::true_, Delimiter, Attribute>
-    {
-        BOOST_SPIRIT_ASSERT_MSG(false, error_invalid_should_not_happen, ());
-    };
-
     ///////////////////////////////////////////////////////////////////////////
     template <typename Expr, typename Enable = void>
     struct format
Modified: trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp	(original)
+++ trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp	2010-01-13 08:23:25 EST (Wed, 13 Jan 2010)
@@ -28,6 +28,12 @@
       , typename Skipper = unused_type, typename Attribute = unused_type const>
     struct match_manip
     {
+        // This assertion makes sure we don't hit the only code path which is 
+        // not implemented (because it isn't needed), where both, the 
+        // expression and the attribute need to be held as a copy.
+        BOOST_SPIRIT_ASSERT_MSG(!CopyExpr::value || !CopyAttr::value
+            , error_invalid_should_not_happen, ());
+
         match_manip(Expr const& xpr, Skipper const& s, Attribute& a)
           : expr(xpr), skipper(s), attr(a), post_skip(skip_flag::postskip) {}
 
@@ -85,12 +91,6 @@
         match_manip& operator= (match_manip const&);
     };
 
-    template <typename Expr, typename Skipper, typename Attribute>
-    struct match_manip<Expr, mpl::true_, mpl::true_, Skipper, Attribute>
-    {
-        BOOST_SPIRIT_ASSERT_MSG(false, error_invalid_should_not_happen, ());
-    };
-
     ///////////////////////////////////////////////////////////////////////////
     template <typename Expr, typename Enable = void>
     struct match