(void)iter_swap(E1, E2), if either
E1 or 
E2 has class or enumeration type and
iter_swap(E1, E2) is a well-formed expression
with overload resolution performed in a context that includes the declaration
template<class I1, class I2>
  void iter_swap(I1, I2) = delete;
and does not include a declaration of 
ranges::iter_swap.  If the function selected by overload resolution does not exchange the values
denoted by 
E1 and 
E2,
the program is ill-formed, no diagnostic required
.