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