Expressions are a cornerstone of the C++ language, providing the primary mechanism by which it can express computations. Every expression has a type, which describes the static type of the value that its computation produces. The expression
7 has type
int, as does the expression
5 + 2, and the expression
x is a variable of type
int. Each expression also has a value category, which describes something about how the value was formed and affects how the expression behaves.
Historically, there were only two value categories: lvalues and rvalues. Lvalues are expressions that refer to actual values stored in memory or in a machine register, such as the expression
x is the ...