swap(std::move_only_function)
friend void swap( std::move_only_function& lhs, std::move_only_function& rhs ) noexcept; | (начиная с C++23) |
Создаёт перегрузку алгоритма std::swap для std::move_only_function. Меняет состояние lhs на состояние rhs. Фактически вызывает lhs.swap(rhs).
Эта функция не видна при обычном поиске без уточнения или поиске с уточнением и может быть найдена только с помощью поиска, зависящего от аргументов, если std::move_only_function<FunctionType> является ассоциированным классом аргументов.
Параметры
| lhs, rhs | - |
объекты std::move_only_function, состояния которых нужно поменять местами |
Возвращаемое значение
(нет)
Пример
#include <concepts>
#include <functional>
#include <iostream>
void foo(const char* str, int x)
{
std::cout << "foo(\"" << str << "\", " << x << ")\n";
}
void bar(const char* str, int x)
{
std::cout << "bar(\"" << str << "\", " << x << ")\n";
}
int main()
{
std::move_only_function<void(const char*, int) const> f1{foo};
std::move_only_function<void(const char*, int) const> f2{bar};
f1("f1", 1);
f2("f2", 2);
std::cout << "std::ranges::swap(f1, f2);\n";
std::ranges::swap(f1, f2); // finds the hidden friend
f1("f1", 1);
f2("f2", 2);
}
Вывод:
foo("f1", 1)
bar("f2", 2)
std::ranges::swap(f1, f2);
bar("f1", 1)
foo("f2", 2)
См. также
меняет местами цели двух объектов std::move_only_function (функция-член) |
|
|
(C++11) | специализирует алгоритм std::swap (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/move_only_function/swap2