$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: dannyh_at_[hidden]
Date: 2007-05-26 21:15:40
Author: dannyh
Date: 2007-05-26 21:15:39 EDT (Sat, 26 May 2007)
New Revision: 4297
URL: http://svn.boost.org/trac/boost/changeset/4297
Log:
replaced the use of BOOST_FOREACH by a more explicit for loop with constant iterators.
Text files modified: 
   sandbox/explore/boost/explore/explore.hpp |    18 +++++++++++++-----                      
   1 files changed, 13 insertions(+), 5 deletions(-)
Modified: sandbox/explore/boost/explore/explore.hpp
==============================================================================
--- sandbox/explore/boost/explore/explore.hpp	(original)
+++ sandbox/explore/boost/explore/explore.hpp	2007-05-26 21:15:39 EDT (Sat, 26 May 2007)
@@ -29,7 +29,8 @@
 #include <boost/mpl/identity.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/foreach.hpp>
-#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/range/functions.hpp>
 #include <boost/range/iterator_range.hpp>
 
 namespace explore {
@@ -105,7 +106,8 @@
     struct print_as_container< T[size]> : true_ {};
  
     //
-    // is_map metafunction
+    // is_map metafunction, probably needs to be exteded for 
+    // hash_maps etc.
     //
     template< typename T>
     struct is_map : false_ {};
@@ -214,7 +216,6 @@
         struct default_format : boost::mpl::list< default_range_format_selector> {};
 
 
-
         //
         // the print_item methods of this class are called whenever print has deduced that
         // the item to print is some container-type
@@ -237,17 +238,24 @@
                         // the formatter in it's turn tells us what the format for the next depth in the tree will be
                         typedef BOOST_DEDUCED_TYPENAME formatter::template next_format< format_type>::type next_format_type;
 
+                       
                         stream << formatter::opening();
                         bool printing_first_item = true;
 
-            BOOST_FOREACH( typename boost::iterator_value< typename boost::range_iterator< item_type>::type >::type const &element, item)
+            typedef BOOST_DEDUCED_TYPENAME boost::range_const_iterator< const item_type>::type iterator_type;
+            typedef BOOST_DEDUCED_TYPENAME boost::iterator_value< iterator_type>::type value_type;
+
+            for ( 
+                iterator_type i = boost::const_begin( item);
+                i != boost::const_end( item);
+                ++i)
                         {
                                 if (!printing_first_item)
                                 {
                                         stream << formatter::delimiter();
                                 }
                                 
-				print( element, stream, next_format_type(), container_policy_type());
+				print( *i, stream, next_format_type(), container_policy_type());
                                 printing_first_item = false;
                         }
                         stream << formatter::closing();