std::move behavior with const-qualified objects
Resource Transfer and Const-Correctness C++ move semantics rely on the ability to modify the source object to transfer ownership of resources. The std::move function performs a cast to an rvalue reference, but the resulting type retains the const-qualification of the original object. When a const T object is passed to std::move , the result is a const T&