How to Implement C++ Move Constructor Correctly