std::swap이 정의한 타입에 대해 느리게 동작할 여지가 있다면 swap을 멤버 함수로 제공해라. 이 멤버 swap은 예외를 던지지 않도록 해야 한다. 멤버 swap을 제공했다면, 이 멤버를 호출하는 비멤버 swap도 제공해라. 클래스에 대해서는 std:swap도 특수화해야 한다. 사용자 입장에서 swap을 호출할 때, std::swap에 대한 using 선언을 넣어 준 후에 네임스페이스 한정 없이 swap을 호출하라. 사용자 정의 타입에 대한 std 템플릿을 완전 특수화하는 것은 가능하다. 그러나, std에 어떤 것이라도 추가하려 하지 마라. swap 지원 & 예외 처리 swap은 예외 안전성 프로그래밍에 없어선 안되는 함수이다. 자기 대입의 가능성에 대처하기 위한 대표적인 메커니즘으로 널리 알려져..