multipolygon_type multipolygon_finish() { try { auto polygons = new std::vector<geos::geom::Geometry*>; std::transform(m_polygons.begin(), m_polygons.end(), std::back_inserter(*polygons), [](std::unique_ptr<geos::geom::Polygon>& p) { return p.release(); }); m_polygons.clear(); return multipolygon_type{m_geos_factory->createMultiPolygon(polygons)}; } catch (const geos::util::GEOSException& e) { THROW(osmium::geos_geometry_error(e.what())); } }