C++ Value Categories Explained: lvalues, rvalues, xvalues, glvalues, and prvalues | CodeTrail