Недавно много questions pop up о том, как предоставить свою собственную функцию swap
. С С++ 11 std::swap
будет использовать std::move
и переместить семантику, чтобы как можно быстрее обменять заданные значения. Это, конечно, работает только в том случае, если вы предоставляете конструктор перемещения и оператор присваивания перемещения (или тот, который использует pass-by-value).
Теперь, с учетом этого, действительно ли необходимо написать собственные функции swap
в С++ 11? Я мог думать только о недвижных типах, но опять же, пользовательский swap
обычно работает через какой-то "обмен указателями" (он же движется). Может быть, с некоторыми ссылочными переменными? Хм...