std::experimental::function<R(Args...)>::operator=

来自cppreference.com
 
 
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
 
 
 
function& operator=( const function& other );
(1) (库基础 TS)
function& operator=( function&& other );
(2) (库基础 TS)
function& operator=( std::nullptr_t ) noexcept;
(3) (库基础 TS)
template< class F >
function& operator=( F&& f );
(4) (库基础 TS)
(5)
template< class F >
function& operator=( std::reference_wrapper<F> f );
(库基础 TS)
template< class F >
function& operator=( std::reference_wrapper<F> f ) noexcept;
(库基础 TS v3)

赋值新目标std::experimental::function 。在以下描述中,令 ALLOCATOR_OF(f)f 的构造中指定的分配器,或若未指定则为构造时 std::experimental::pmr::get_default_resource() 的值 (库基础 TS v3 前)默认构造的 std::pmr::polymorphic_allocator<> (库基础 TS v3)

1) 如同通过执行 function(std::allocator_arg, ALLOCATOR_OF(*this), other).swap(*this); 赋值 other目标的副本。
2) 如同以执行 function(std::allocator_arg, ALLOCATOR_OF(*this), std::move(other)).swap(*this); 移动 other目标*thisother 在合法状态并拥有未指定值。
3) 销毁 *this目标。调用后 *this。赋值后 get_memory_resource()所返回的内存资源等价于赋值前的内存资源,但地址可以更改。
4) 如同通过执行 function(std::allocator_arg, ALLOCATOR_OF(*this),std::forward<F>(f)).swap(*this); 设置 *this目标f 。此运算符仅若 f 对参数类型 Args... 和返回类型 R 可调用 (Callable) 才参与重载决议。
5) 如同通过执行 function(std::allocator_arg, ALLOCATOR_OF(*this), f).swap(*this); 设置 *this目标f 的副本。

参数

other - 要复制或移动的另一 std::experimental::function 对象
f - 要用以初始化目标的可调用对象
类型要求
-
F 必须符合可调用 (Callable) 的要求。

返回值

*this

异常

1,2,4) 在分配所需的存储或初始化 *this 的目标时抛出的异常,若存在。
5) (无)

注解

get_memory_resource() != other.get_memory_resource() (库基础 TS v3 前)get_allocator() != other.get_allocator() (库基础 TS v3) 则移动赋值运算符可能需要分配存储。