$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: jefffaust_at_[hidden]
Date: 2007-05-28 19:25:53
Author: jefffaust
Date: 2007-05-28 19:25:52 EDT (Mon, 28 May 2007)
New Revision: 4341
URL: http://svn.boost.org/trac/boost/changeset/4341
Log:
Use is_assoc_iter to choose correct output function for map values.
Text files modified: 
   sandbox/explore/boost/explore/stream_container.hpp |    30 ++++++++++++++++--------------          
   1 files changed, 16 insertions(+), 14 deletions(-)
Modified: sandbox/explore/boost/explore/stream_container.hpp
==============================================================================
--- sandbox/explore/boost/explore/stream_container.hpp	(original)
+++ sandbox/explore/boost/explore/stream_container.hpp	2007-05-28 19:25:52 EDT (Mon, 28 May 2007)
@@ -11,6 +11,7 @@
 #define STREAM_CONTAINER_INCLUDED
 
 #include "stream_state.hpp"
+#include "is_assoc_iter.hpp"
 
 #include <ostream>
 #include <boost/functional/detail/container_fwd.hpp>
@@ -187,6 +188,7 @@
     {
         iterator_range_wrapper(const boost::iterator_range<T>& ir) : t(ir) {}
         boost::iterator_range<T> t;
+        typedef typename boost::mpl::if_<typename is_assoc_iter<T>::type, stream_map_value, stream_normal_value>::type stream_type;
     };
 
     template<typename T>
@@ -197,15 +199,15 @@
 
     template< typename IteratorT >
     iterator_range_wrapper<IteratorT>
-        make_iterator_range( IteratorT Begin, IteratorT End ) 
-    {   
+        make_iterator_range(IteratorT Begin, IteratorT End) 
+    {
         return as_container(boost::make_iterator_range(Begin, End));
     }
 
     template< class ForwardRange >
     iterator_range_wrapper<BOOST_DEDUCED_TYPENAME boost::range_const_iterator<ForwardRange>::type>
-        make_iterator_range( const ForwardRange& r ) 
-    {   
+        make_iterator_range(const ForwardRange& r) 
+    {
         return as_container(boost::make_iterator_range(r));
     }
 }
@@ -276,25 +278,25 @@
 namespace explore
 {
 #   if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-    template<typename Elem, typename Tr, typename T, std::size_t size>
-    std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& ostr, T (&a)[size])
-    {
-        return stream_container(ostr, &a[0], &a[size]);
+    template<typename Elem, typename Tr, typename T, std::size_t size>
+    std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& ostr, T (&a)[size])
+    {
+        return stream_container(ostr, &a[0], &a[size]);
     }
 
-    template<typename Elem, typename Tr, std::size_t size>
-    std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& ostr, const Elem* s)
-    {
-        return stream_container(ostr, &s[0], &s[strlen(s)]);
+    template<typename Elem, typename Tr, std::size_t size>
+    std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& ostr, const Elem* s)
+    {
+        return stream_container(ostr, &s[0], &s[strlen(s)]);
     }
 #   endif
 
     // stream boost::iterator_range
     template<typename Elem, typename Tr, typename T>
     std::basic_ostream<Elem, Tr>& operator<<(std::basic_ostream<Elem, Tr>& ostr, 
-    explore::iterator_range_wrapper<T>& r)
+        explore::iterator_range_wrapper<T>& r)
     {
-        return explore::stream_container(ostr, r.t.begin(), r.t.end());
+        return explore::stream_container(ostr, r.t.begin(), r.t.end(), explore::iterator_range_wrapper<T>::stream_type());
     }
 
     // manipulator