$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r68703 - in trunk/boost/geometry: algorithms/detail/sections multi/core
From: barend.gehrels_at_[hidden]
Date: 2011-02-07 15:51:36
Author: barendgehrels
Date: 2011-02-07 15:51:35 EST (Mon, 07 Feb 2011)
New Revision: 68703
URL: http://svn.boost.org/trac/boost/changeset/68703
Log:
Propagate constness in metafunction ring_return_type
Text files modified: 
   trunk/boost/geometry/algorithms/detail/sections/range_by_section.hpp |     2 --                                      
   trunk/boost/geometry/multi/core/ring_type.hpp                        |    21 +++++++++++++--------                   
   2 files changed, 13 insertions(+), 10 deletions(-)
Modified: trunk/boost/geometry/algorithms/detail/sections/range_by_section.hpp
==============================================================================
--- trunk/boost/geometry/algorithms/detail/sections/range_by_section.hpp	(original)
+++ trunk/boost/geometry/algorithms/detail/sections/range_by_section.hpp	2011-02-07 15:51:35 EST (Mon, 07 Feb 2011)
@@ -40,8 +40,6 @@
 template <typename Polygon, typename Section>
 struct full_section_polygon
 {
-    typedef typename geometry::ring_type<Polygon>::type ring_type;
-
     static inline typename ring_return_type<Polygon const>::type apply(Polygon const& polygon, Section const& section)
     {
         return section.ring_index < 0
Modified: trunk/boost/geometry/multi/core/ring_type.hpp
==============================================================================
--- trunk/boost/geometry/multi/core/ring_type.hpp	(original)
+++ trunk/boost/geometry/multi/core/ring_type.hpp	2011-02-07 15:51:35 EST (Mon, 07 Feb 2011)
@@ -26,26 +26,31 @@
 {
 
 template <typename MultiPolygon>
-struct ring_type<multi_polygon_tag, MultiPolygon>
+struct ring_return_type<multi_polygon_tag, MultiPolygon>
 {
-    typedef typename geometry::ring_type
+    typedef typename ring_return_type
         <
-            typename boost::range_value<MultiPolygon>::type
+            polygon_tag,
+            typedef typename mpl::if_
+                <
+                    boost::is_const<MultiPolygon>,
+                    typename boost::range_value<MultiPolygon>::type const,
+                    typename boost::range_value<MultiPolygon>::type
+                >::type
         >::type type;
 };
 
+
 template <typename MultiPolygon>
-struct ring_return_type<multi_polygon_tag, MultiPolygon>
+struct ring_type<multi_polygon_tag, MultiPolygon>
 {
-    typedef typename ring_return_type
+    typedef typename boost::remove_reference
         <
-            polygon_tag,
-            typename boost::range_value<MultiPolygon>::type
+            typename ring_return_type<multi_polygon_tag, MultiPolygon>::type
         >::type type;
 };
 
 
-
 } // namespace core_dispatch
 #endif