That is if you are looking at it from the point of view of someone who wants to use raw pointers as member variables. By storing an object, or a container of objects, there would be no need to explicitly perform deep copying. Likewise, the use of smart pointers would reduce, if not eliminate, the danger of not copying the objects pointed to.
I cherish the power they've given to developers to design with, but if they're designing a safe language, shouldn't they use a safe approach to copy? If you don't like it, you can, of course, override it.