The standard denotes an xvalue as a glvalue whose resources can be reused. It also defines an rvalue as either an xvalue or a prvalue. And a prvalue is defined as an expression that either initializes an object, computes the value of an operand of an operator or of an expression of type cv void. To me right now this concludes the following: Every xvalue is a glvalue but since an rvalue can be either a prvalue(no xvalues are prvalues) or an xvalue and the definition of prvalues does not rule xvalues out of being an rvalue these definitions do not clarify that an xvalue has to be an rvalue. Is every xvalue a glvalue as well as an rvalue?
I tried to understand the standard but couldnt conclude on myself whether my statement is true.
Yes. There are three mutually exclusive categories: lvalues, xvalues, and prvalues.
lvalues and xvalues together are called glvalues.
prvalues and xvalues together are called rvalues.