swap(std::move_only_function)
从 zh.cppreference.net
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); // 找到隐藏的友元函数 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
算法
(函数模板) |