If you want a copy constructor, it would work like this:
Copy : Clone :: Move : Relocate
I.e. there would not be the presumption that everything is automatically movable or coppiable, there would be magic traits to indicate memmove / memcpy and friends, and then plain old stdlib super traits for user-defined cloning and relocating.
This is the the right design for move constructors, full stop.
memcpy everywhere is definitely not the best answer to every problem