Otherwise, if T is an array type ([basic.compound]) and
remove_all_extents_t<T> is an incomplete type,
ranges::data(E) is ill-formed with no diagnostic required.
Otherwise, if decay-copy(t.data())
is a valid expression of pointer to object type,
ranges::data(E) is expression-equivalent to
decay-copy(t.data()).
Otherwise, if ranges::begin(t)
is a valid expression whose type models
contiguous_iterator,
ranges::data(E) is expression-equivalent to
to_address(ranges::begin(E)).