One of the expressions shall be a glvalue of type “array of
” or a prvalue of type “pointer
” 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
except that in the case of an array operand, the result is an lvalue
if that operand is an lvalue and an xvalue otherwise.