The goal of this article is to understand the nuances of value categories and copy elision (aka RVO/NRVO). A deeper understanding of how C++ handles variables will lead to better (and correct) use of const, lvalue and rvalue.