Возможный дубликат:
Переместить семантику == пользовательская функция свопинга устарела?
Вот как выглядит std::swap в С++ 11:
template<typename T>
void swap(T& x, T& y)
{
  T z = std::move(x);
    x = std::move(y);
    y = std::move(z);
}
Должен ли я по-прежнему специализироваться на std::swap для моих собственных типов или будет std::swap быть таким же эффективным, как и он, при условии, что мой класс определяет конструктор перемещения и оператор назначения перемещения, конечно?
