@@ -322,43 +322,43 @@ namespace {
322322class split_visitor
323323{
324324public:
325- split_visitor (std::vector<geometry_t > *output, uint32_t srid) noexcept
325+ split_visitor (std::vector<geometry_t > *output, int srid) noexcept
326326 : m_output(output), m_srid(srid)
327327 {}
328328
329329 template <typename T>
330330 void operator ()(T) const
331331 {}
332332
333- void operator ()(geom::collection_t const &geom) const
333+ void operator ()(geom::collection_t & &geom) const
334334 {
335- for (auto sgeom : geom) {
335+ for (auto && sgeom : geom) {
336336 m_output->push_back (std::move (sgeom));
337337 }
338338 }
339339
340340 template <typename T>
341- void operator ()(geom::multigeometry_t <T> const &geom) const
341+ void operator ()(geom::multigeometry_t <T> & &geom) const
342342 {
343- for (auto sgeom : geom) {
343+ for (auto && sgeom : geom) {
344344 m_output->emplace_back (std::move (sgeom), m_srid);
345345 }
346346 }
347347
348348private:
349349 std::vector<geometry_t > *m_output;
350- uint32_t m_srid;
350+ int m_srid;
351351
352352}; // class split_visitor
353353
354354} // anonymous namespace
355355
356- std::vector<geometry_t > split_multi (geometry_t geom, bool split_multi)
356+ std::vector<geometry_t > split_multi (geometry_t && geom, bool split_multi)
357357{
358358 std::vector<geometry_t > output;
359359
360360 if (split_multi && geom.is_multi ()) {
361- geom. visit (split_visitor{&output, static_cast < uint32_t >( geom.srid ())} );
361+ visit (split_visitor{&output, geom.srid ()}, std::move (geom) );
362362 } else if (!geom.is_null ()) {
363363 output.push_back (std::move (geom));
364364 }
0 commit comments