Otherwise, if
T is a class or enumeration type and
decay-copy(end(t))
is a valid expression whose type models
sentinel_for<iterator_t<T>>
with overload resolution performed in a context in which
unqualified lookup for
end finds only the declarations
void end(auto&) = delete;
void end(const auto&) = delete;
then
ranges::end(E) is expression-equivalent to
decay-copy(end(t))
with overload resolution performed in the above context
.