std::move_only_function::operator=
来自 cppreference.com
< cpp | utility | functional | move only function
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
处于具有未指定值的有效状态。3) 如果当前目标存在,则销毁它。调用后,*this 为空。
4) 将 *this 的目标设置为可调用对象
f
,或者如果 f
是空函数指针、空成员函数指针或空 std::move_only_function
,则销毁当前目标,就好像执行了 move_only_function(std::forward<F>(f)).swap(*this); 一样。只有当 move_only_function
的 F
构造函数参与重载解析时,此重载才会参与重载解析。如果所选构造函数调用是非法的或具有未定义的行为,则程序是非法的或具有未定义的行为。内容 |
[编辑] 参数
other | - | 另一个要移动其目标的 std::move_only_function 对象 |
f | - | 用于初始化新目标的可调用对象 |
[编辑] 返回值
*this
[编辑] 备注
故意不强制要求移动赋值运算符为 noexcept,为将来可能出现的分配器感知的 move_only_function
预留空间。
move_only_function
可以从 std::in_place_type<Fn> 赋值,因为它可以从该参数构造。
[编辑] 另请参阅
为目标赋值新的值 ( std::function<R(Args...)> 的公有成员函数) |