Overview One of the poweful features of modern C++ is move semantics. So, what is move semantics? Move semantics makes it possible for compiler to replace expensive copying operations with less expensive moves. In instead of constructing/assigning an object by a deep copy, you can do it by move constructor or move assignment operators.
To appreciate the use of move semantics, we need to know the scope of it, which brings us to the topic of rvalue and lvalue.