Why std::move and move semantics?

A description of the changes made