diff --git a/include/boost/geometry/geometries/adapted/boost_polygon/ring.hpp b/include/boost/geometry/geometries/adapted/boost_polygon/ring.hpp index 93b21fee9..490fa45fe 100644 --- a/include/boost/geometry/geometries/adapted/boost_polygon/ring.hpp +++ b/include/boost/geometry/geometries/adapted/boost_polygon/ring.hpp @@ -69,7 +69,26 @@ struct push_back > } }; +template +struct resize > +{ + typedef boost::polygon::point_data point_type; + static inline void apply(boost::polygon::polygon_data& data, + std::size_t new_size) + { + // Boost.Polygon's polygons are not resizable. So create a temporary vector, + // resize it and set it to the original. Of course: this is not efficient. + // But there seems no other way (without using a wrapper) + std::vector temporary_vector + ( + boost::polygon::begin_points(data), + boost::polygon::end_points(data) + ); + temporary_vector.resize(new_size); + data.set(temporary_vector.begin(), temporary_vector.end()); + } +}; } // namespace traits diff --git a/test/geometries/Jamfile.v2 b/test/geometries/Jamfile.v2 index 5b809bb12..763b9b6f0 100644 --- a/test/geometries/Jamfile.v2 +++ b/test/geometries/Jamfile.v2 @@ -13,7 +13,7 @@ test-suite boost-geometry-geometries [ run adapted.cpp ] [ run boost_array_as_point.cpp ] [ run boost_fusion.cpp ] - # [ run boost_polygon.cpp ] + [ run boost_polygon.cpp ] [ run boost_range.cpp ] [ run boost_tuple.cpp ] [ run box.cpp ]