> Moving ownership between containers to avoid allocations was possible
That's not the biggest upside of move semantics. You can't safely express smart pointers without move semantics. They tried with std::auto_ptr, and it didn't work.
Have a look at Qt implicit sharing. There is/was also a Boost library which could do most of it long before c++11.
Have a look at Qt implicit sharing. There is/was also a Boost library which could do most of it long before c++11.