std::swap() используется многими контейнерами std (такими как std::list и std::vector) во время сортировки и четного присваивания.
Но реализация std swap() очень обобщена и довольно неэффективна для пользовательских типов.
Таким образом, эффективность может быть достигнута за счет перегрузки std::swap() с помощью специфичной для конкретного типа реализации. Но как вы можете реализовать его, чтобы он использовался контейнерами std?