performance, expensive object copies
move semantics, temporary objects
implemented with rvalue references。
References
[1] https://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html