summaryrefslogtreecommitdiff
path: root/boost/geometry/algorithms/detail/sub_range.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/algorithms/detail/sub_range.hpp')
-rw-r--r--boost/geometry/algorithms/detail/sub_range.hpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/boost/geometry/algorithms/detail/sub_range.hpp b/boost/geometry/algorithms/detail/sub_range.hpp
index a68f31362a..eda3ce58ba 100644
--- a/boost/geometry/algorithms/detail/sub_range.hpp
+++ b/boost/geometry/algorithms/detail/sub_range.hpp
@@ -44,7 +44,7 @@ struct sub_range<Geometry, Tag, false>
template <typename Geometry>
struct sub_range<Geometry, polygon_tag, false>
{
- typedef typename geometry::ring_type<Geometry>::type & return_type;
+ typedef typename geometry::ring_return_type<Geometry>::type return_type;
template <typename Id> static inline
return_type apply(Geometry & geometry, Id const& id)
@@ -55,7 +55,11 @@ struct sub_range<Geometry, polygon_tag, false>
}
else
{
- std::size_t ri = static_cast<std::size_t>(id.ring_index);
+ typedef typename boost::range_size
+ <
+ typename geometry::interior_type<Geometry>::type
+ >::type size_type;
+ size_type const ri = static_cast<size_type>(id.ring_index);
return range::at(geometry::interior_rings(geometry), ri);
}
}
@@ -81,7 +85,9 @@ struct sub_range<Geometry, Tag, true>
return_type apply(Geometry & geometry, Id const& id)
{
BOOST_ASSERT(0 <= id.multi_index);
- return sub_sub_range::apply(range::at(geometry, id.multi_index), id);
+ typedef typename boost::range_size<Geometry>::type size_type;
+ size_type const mi = static_cast<size_type>(id.multi_index);
+ return sub_sub_range::apply(range::at(geometry, mi), id);
}
};