C++ named requirements:Swappable
Any lvalue or rvalue of this type can be swapped with any lvalue or rvalue of some other type, using unqualified function call swap()
Any lvalue or rvalue of this type can be swapped with any lvalue or rvalue of some other type, using unqualified function call swap()
Any lvalue or rvalue of this type can be swapped with any lvalue or rvalue of some other type, using unqualified function call swap()