$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r59354 - in trunk/boost/spirit/home: karma/detail support
From: hartmut.kaiser_at_[hidden]
Date: 2010-01-29 21:13:48
Author: hkaiser
Date: 2010-01-29 21:13:47 EST (Fri, 29 Jan 2010)
New Revision: 59354
URL: http://svn.boost.org/trac/boost/changeset/59354
Log:
Spirit: proper use of customization points in string_generate
Text files modified: 
   trunk/boost/spirit/home/karma/detail/string_generate.hpp |     6 +++---                                  
   trunk/boost/spirit/home/support/container.hpp            |     8 ++++++++                                
   2 files changed, 11 insertions(+), 3 deletions(-)
Modified: trunk/boost/spirit/home/karma/detail/string_generate.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/string_generate.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/string_generate.hpp	2010-01-29 21:13:47 EST (Fri, 29 Jan 2010)
@@ -56,9 +56,9 @@
     inline bool string_generate(OutputIterator& sink
       , Container const& c, Filter filter)
     {
-        typename range_const_iterator<Container>::type end = boost::end(c);
-        for (typename range_const_iterator<Container>::type it = boost::begin(c); 
-             it != end; ++it)
+        typedef typename traits::container_iterator<Container>::type iterator;
+        iterator end = boost::end(c);
+        for (iterator it = boost::begin(c); it != end; ++it)
         {
             *sink = filter(*it);
             ++sink;
Modified: trunk/boost/spirit/home/support/container.hpp
==============================================================================
--- trunk/boost/spirit/home/support/container.hpp	(original)
+++ trunk/boost/spirit/home/support/container.hpp	2010-01-29 21:13:47 EST (Fri, 29 Jan 2010)
@@ -22,6 +22,7 @@
 #include <boost/variant.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/repeat.hpp>
+#include <boost/range/iterator_range.hpp>
 
 namespace boost { namespace spirit { namespace traits
 {
@@ -163,6 +164,13 @@
         typedef typename Container::const_iterator type;
     };
 
+    template <typename Iterator>
+    struct container_iterator<iterator_range<Iterator> >
+    {
+        typedef typename range_const_iterator<
+              iterator_range<Iterator> >::type type;
+    };
+
     template <>
     struct container_iterator<unused_type>
     {