std::move doesn't move anything: A deep dive into Value Categories

Why std::move is just a cast, how it kills RVO if used wrong, and the mechanics of ownership transfer.