Функция std::swap отличается от обычного присваивания переменных тем, что она позволяет обмениваться значениями двух переменных. 34
При обычном присваивании сначала создаётся временная копия присваиваемого объекта, и в случае успешного создания копии текущий объект и копия обмениваются содержимым. 1
Функция std::swap же напрямую обменивает значения двух параметров, используя их оператор копирования. 1