命名空间
变体
操作

std::move_only_function::operator=

来自 cppreference.com
 
 
工具库
语言支持
类型支持 (基本类型,RTTI)
库功能测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三元比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
函数对象
函数调用
(C++17)(C++23)
恒等函数对象
(C++20)
透明运算符包装器
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

旧绑定器和适配器
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)  
(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
(直到 C++17*)(直到 C++17*)
(直到 C++17*)(直到 C++17*)

(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
 
 
move_only_function& operator=( move_only_function&& other );
(1) (自 C++23 起)
move_only_function& operator=( const move_only_function& ) = delete;
(2) (自 C++23 起)
move_only_function& operator=( std::nullptr_t ) noexcept;
(3) (自 C++23 起)
template< class F >
move_only_function& operator=( F&& f );
(4) (自 C++23 起)

将新的目标赋值给 std::move_only_function 或销毁其目标。

1)other 的目标移动到 *this,或者如果 other 为空,则通过 auto(std::move(other)).swap(*this) 销毁 *this 的目标(如果有)。在移动赋值后,other 处于具有未指定值的有效状态。
2) 复制赋值运算符已删除。std::move_only_function 不满足 CopyAssignable
3) 如果当前目标存在,则销毁它。调用后,*this 为空。
4)*this 的目标设置为可调用对象 f,或者如果 f 是空函数指针、空成员函数指针或空 std::move_only_function,则销毁当前目标,就好像执行了 move_only_function(std::forward<F>(f)).swap(*this); 一样。只有当 move_only_functionF 构造函数参与重载解析时,此重载才会参与重载解析。如果所选构造函数调用是非法的或具有未定义的行为,则程序是非法的或具有未定义的行为。

内容

[编辑] 参数

other - 另一个要移动其目标的 std::move_only_function 对象
f - 用于初始化新目标的可调用对象

[编辑] 返回值

*this

[编辑] 备注

故意不强制要求移动赋值运算符为 noexcept,为将来可能出现的分配器感知的 move_only_function 预留空间。

move_only_function 可以从 std::in_place_type<Fn> 赋值,因为它可以从该参数构造。

[编辑] 另请参阅

为目标赋值新的值
(std::function<R(Args...)> 的公有成员函数) [编辑]