Qubc
@Qubc
Ненавижу полисемию.

Почему std::swap вызывает конструктор перемещения?

Не могу представить хотя бы примерную реализацию. Передача в swap по ссылке, ссылка внутри уже l-value переменная...
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Чтобы поменять два значения местами, надо сначала одно значение переложить в какую-то временную перменную. Вот тут и вызывается конструктор.

void swap(T &a, T &b) {
  T tmp{std::move(a)};
  a = std::move(b);
  b = std::move(tmp);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы