diff --git a/pcl_conversions/include/pcl_conversions/pcl_conversions.h b/pcl_conversions/include/pcl_conversions/pcl_conversions.h index 4f652bd2..6f5f20c6 100644 --- a/pcl_conversions/include/pcl_conversions/pcl_conversions.h +++ b/pcl_conversions/include/pcl_conversions/pcl_conversions.h @@ -356,10 +356,25 @@ namespace pcl_conversions { /** pcl::Vertices <=> pcl_msgs::Vertices **/ + namespace internal + { + template + inline void move(std::vector &a, std::vector &b) + { + b.swap(a); + } + + template + inline void move(std::vector &a, std::vector &b) + { + b.assign(a.cbegin(), a.cend()); + } + } + inline void fromPCL(const pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert) { - vert.vertices = pcl_vert.vertices; + vert.vertices.assign(pcl_vert.vertices.cbegin(), pcl_vert.vertices.cend()); } inline @@ -376,7 +391,7 @@ namespace pcl_conversions { inline void moveFromPCL(pcl::Vertices &pcl_vert, pcl_msgs::msg::Vertices &vert) { - vert.vertices.swap(pcl_vert.vertices); + internal::move(pcl_vert.vertices, vert.vertices); } inline @@ -393,7 +408,7 @@ namespace pcl_conversions { inline void toPCL(const pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert) { - pcl_vert.vertices = vert.vertices; + pcl_vert.vertices.assign(vert.vertices.cbegin(), vert.vertices.cend()); } inline @@ -410,7 +425,7 @@ namespace pcl_conversions { inline void moveToPCL(pcl_msgs::msg::Vertices &vert, pcl::Vertices &pcl_vert) { - pcl_vert.vertices.swap(vert.vertices); + internal::move(vert.vertices, pcl_vert.vertices); } inline