For each expression e of the form *(DRE + n) (or *(n + DRE)), where DRE has a pointer type and n is an integer literal, e will be transformed to DRE[n] (or n[DRE] respectively), if
- 1. e is at the left-hand side of an assignment or is an lvalue being casted to an rvalue; and
- 2. the variable referred by DRE is going to be transformed to be of std::span type.
Spacing is a bit weird here.