Namespaces
Variants

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

From cppreference.net
function & operator = ( const function & other ) ;
(1) (library fundamentals TS)
function & operator = ( function && other ) ;
(2) (library fundamentals TS)
function & operator = ( std:: nullptr_t ) noexcept ;
(3) (library fundamentals TS)
template < class F >
function & operator = ( F && f ) ;
(4) (library fundamentals TS)
(5)
template < class F >
function & operator = ( std:: reference_wrapper < F > f ) ;
(library fundamentals TS)
template < class F >
function & operator = ( std:: reference_wrapper < F > f ) noexcept ;
(library fundamentals TS v3)

Присваивает новый целевой объект для std::experimental::function . В приведенном ниже описании пусть ALLOCATOR_OF ( f ) будет аллокатором, указанным при создании f , или значением std:: experimental :: pmr :: get_default_resource ( ) (до TS основ библиотеки v3) сконструированным по умолчанию std:: pmr :: polymorphic_allocator <> значением (TS основ библиотеки v3) на момент создания, если аллокатор не был указан.

1) Присваивает копию target из other , как если бы выполнялось function ( std:: allocator_arg , ALLOCATOR_OF ( * this ) , other ) . swap ( * this ) ; .
2) Перемещает целевой объект из other в * this , как если бы выполнялся вызов function ( std:: allocator_arg , ALLOCATOR_OF ( * this ) , std :: move ( other ) ) . swap ( * this ) ; . other находится в допустимом состоянии с неопределённым значением.
3) Уничтожает целевой объект для * this . * this становится пустым после вызова. Ресурс памяти, возвращаемый get_memory_resource() после присваивания, эквивалентен ресурсу памяти до присваивания, но адрес может измениться.
4) Устанавливает целевой объект для * this в вызываемый объект f , как если бы выполнялось function ( std:: allocator_arg , ALLOCATOR_OF ( * this ) , std:: forward < F > ( f ) ) . swap ( * this ) ; . Этот оператор не участвует в разрешении перегрузки, если f не является Callable для типов аргументов Args... и типа возвращаемого значения R .
5) Устанавливает целевой объект для * this как копию f , как если бы выполнялось function ( std:: allocator_arg , ALLOCATOR_OF ( * this ) , f ) . swap ( * this ) ; .

Содержание

Параметры

other - другой std::experimental::function объект для копирования или перемещения
f - вызываемый объект для инициализации target
Требования к типам
-
F должен удовлетворять требованиям Callable .

Возвращаемое значение

* this

Исключения

1,2,4) Исключение выбрасывается при необходимости выделения памяти или инициализации цели * this , если таковые имеются.
5) (нет)

Примечания

Оператор перемещающего присваивания может потребовать выделения памяти, если get_memory_resource ( ) ! = other. get_memory_resource ( ) (до TS fundamentals библиотеки v3) get_allocator ( ) ! = other. get_allocator ( ) (TS fundamentals библиотеки v3)