swap(std::move_only_function)
来自cppreference.com
| |
(C++23 起) | |
为 std::move_only_function 重载 std::swap 算法。交换 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 算法 (函数模板) |