Subscripting is allowed on arrays that are not lvalues, even though the
unary `&
' operator is not. For example, this is valid in GNU C though
not valid in other C dialects:
struct foo {int a[4];}; struct foo f(); bar (int index) { return f().a[index]; }