ARMARX_MINIMAL_PLACEMENT_CONSTRUCTION_HELPER \
void _copyTo(_typeBase* target) const override \
{ \
using _type = typename std::decay<decltype(*this)>::type; \
_type* const castedTarget = dynamic_cast<_type*>(target); \
ARMARX_CHECK_NOT_NULL(castedTarget); \
*castedTarget = *this; \
} \
std::unique_ptr<_typeBase> _clone() const override \
{ \
using _type = typename std::decay<decltype(*this)>::type; \
return std::unique_ptr<_typeBase>{new _type(*this)}; \
} \
_typeBase* _placementConstruct(void* place) const override \
{ \
using _type = typename std::decay<decltype(*this)>::type; \
return new (place) _type; \
}