In C++11 it was decided that the compiler will implicitly generate move constructor as member-wise moves, unless you have explicitly defined a copy constructor or copy/move assignment or a destructor.

The goal was to achieve a balance between breaking some of existing code and providing useful optimizations based on move constructors.

Move constructor - Q&A