41 #include <type_traits>
48 template<
typename Po
intInT,
typename Po
intOutT>
51 using PodIn =
typename traits::POD<PointInT>::type;
52 using PodOut =
typename traits::POD<PointOutT>::type;
55 : p1_ (reinterpret_cast<const
PodIn&> (p1))
56 , p2_ (reinterpret_cast<
PodOut&> (p2)) { }
58 template<
typename Key>
inline void
63 using InT =
typename pcl::traits::datatype<PointInT, Key>::type;
64 using OutT =
typename pcl::traits::datatype<PointOutT, Key>::type;
66 BOOST_MPL_ASSERT_MSG ((std::is_same<InT, OutT>::value),
67 POINT_IN_AND_POINT_OUT_HAVE_DIFFERENT_TYPES_FOR_FIELD,
68 (Key, PointInT&, InT, PointOutT&, OutT));
69 memcpy (
reinterpret_cast<std::uint8_t*
>(&p2_) + pcl::traits::offset<PointOutT, Key>::value,
70 reinterpret_cast<const std::uint8_t*
>(&p1_) + pcl::traits::offset<PointInT, Key>::value,
Helper functor structure for concatenate.
typename traits::POD< PointInT >::type PodIn
typename traits::POD< PointOutT >::type PodOut
NdConcatenateFunctor(const PointInT &p1, PointOutT &p2)