ISO C allows expressions with non-left or right values (that is, values)-function indicators-that is, single function names. It obtains the function pointer value through conversion.
ISO C++03 stipulates that the expression must be one of the left or right values. However, in ISO C++ 1 1, the left-valued property is formally extended to a more complex value category: the left-valued property is a general lvalue, which is opposite to prvalue and is purely right-valued. Pure right value is equivalent to the right value of the previous version, and xvalue, expired value (xvalue). As an expression, the function name is left in C++.
In ISO C/C++, left values can be further divided into modifiable left values and unmodifiable left values. Only modifiable left values can be used as left operands of assignment expressions. An example of a class of non-modifiable left values is a left value with const type.
Note that the value on the left may represent an object. There is no specific relationship between the left value and the object type. The definition of ISO C99 (and the following three technical corrections) here is incorrect, and it has been corrected in ISO C 1 1.
Left values and constants are not necessarily fixed. Constant is a grammatical element in C language, which corresponds to C++ text together with C string text. As a constant expression, it can be a left value (such as the literal string quantity of C++, also called a string constant, although the literal string quantity of C is not a constant strictly) or a non-left value (the constant of C or other literal quantities of C++). Note that the constants here are much stricter than the concepts commonly used in mathematics, and they are not directly opposed to variables.