Move Semantics
- The value categories of C++11 include lvalue, prvalue, xvalue, lvalue and xvalue form glvalue, and prvalue and xvalue form right value (rvalue). In order for the compiler to recognize constructors that accept rvalues as parameters, you need to introduce rvalue reference symbols (&&) to distinguish move constructors from copy constructors
#include <cassert>
#include <string>
#include