Otherwise, if 
T is a class or enumeration type and
  
auto(end(t))
  is a valid expression whose type models
  
sentinel_for<iterator_t<T>>
  where the meaning of 
end is established as-if by performing
  argument-dependent lookup only (
[basic.lookup.argdep]),
  then 
ranges::end(E) is expression-equivalent to
  that expression
.