Lvalue-to-rvalue conversions
If an lvalue is used in a situation
in which the compiler expects an rvalue, the compiler
converts the lvalue to an rvalue.
However, an rvalue
cannot be converted implicitly to an lvalue. The following table lists exceptions to this rule.
| Situation before conversion | Resulting behavior |
|---|---|
| The lvalue is a function type. | A pointer to function |
| The lvalue is an array. | A pointer to the first element of the array |
| The type of the lvalue is an incomplete type. | compile-time error |
| The lvalue refers to an uninitialized object. | undefined behavior |
| The lvalue refers to an object not of the type of the rvalue, nor of a type derived from the type of the rvalue. | undefined behavior |


