cpp/named req/ValueSwappable

Two objects of this type can be dereferenced and the resulting values can be swapped using unqualified function call in the context where both std and the user-defined s are visible.

Requirements
A type T is if


 * 1)  satisfies the  requirements
 * 2) For any dereferenceable object  of type  (that is, any value other than the end iterator),  satisfies the  requirements.

Many standard library functions expect their arguments to satisfy, which means that any time the standard library performs a swap, it uses the equivalent of.