namespace mrpt {
namespace utils { \
template <> pimpl<_TYPE>::pimpl() : ptr() {} \
template <> pimpl<_TYPE>::~pimpl() {} \
\
template <> pimpl<_TYPE>::pimpl(pimpl<_TYPE> && op) noexcept : ptr(std::move(op.ptr)) {} \
template <> pimpl<_TYPE>& pimpl<_TYPE>::operator=(pimpl<_TYPE>&& op) noexcept { ptr = std::move(op.ptr); return *this; } \
\
template <> pimpl<_TYPE>::pimpl(const pimpl<_TYPE> & op) { \
if (op.ptr.get() == ptr.get()) return; \
ptr.reset(new _TYPE()); \
*ptr = *op.ptr; \
} \
template <> pimpl<_TYPE>& pimpl<_TYPE>::operator=(const pimpl<_TYPE>& op) { \
if (op.ptr.get() == ptr.get()) return *this; \
ptr.reset(new _TYPE()); \
*ptr = *op.ptr; \
return *this; \
} \
} }
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.