C++ Expressions each have a "value category." "Rvalue references," introduced in C++11, allow us to 'move' our data. But what constitutes an rvalue, and how it is related to other expressions, remains a source of confusion to most. This video talks about what these categories are and what they mean.
For a reference of what expressions have which categories, and for additional reading on the topic, see: http://en.cppreference.com/w/cpp/language/value_category