One of the expressions shall be a glvalue of type βarray of
Tβ or a prvalue of type βpointer
to
Tβ and the other shall be a prvalue of unscoped enumeration or integral type
. The result is of type β
Tβ
. The type β
Tβ shall be a completely-defined object type
.
The expression
E1[E2] is identical (by definition) to
*((E1)+(E2)),
except that in the case of an array operand, the result is an lvalue
if that operand is an lvalue and an xvalue otherwise
.