To clarify, you are saying the point of std::move is that it returns an rvalue reference, allowing the called function to pick the overload variant that is allowed to trample and destroy it's argument?
Specifically, what you did not make clear is the return type of std::move.
Specifically, what you did not make clear is the return type of std::move.