std::move_only_function::operator=
Материал из cppreference.com
<tbody>
</tbody>
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 или уничтожает цель *this (если есть), если other пустой, эквивалентно auto(std::move(other)).swap(*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_function из F участвует в разрешении перегрузки. Программа некорректна или имеет неопределенное поведение, если выбранный вызов конструктора некорректен или имеет неопределённое поведение.Параметры
| other | — | другой объект std::move_only_function для перемещения цели
|
| f | — | вызываемый объект для инициализации цели |
Возвращаемое значение
*this
Примечание
Намеренно не требуется, чтобы оператор присваивания перемещением был noexcept, чтобы оставить место для move_only_function с учётом аллокатора в будущем.
move_only_function может быть присвоен из std::in_place_type<Fn>, если он может быть создан из этого аргумента.
Смотрите также
| присваивает новую цель (public функция-элемент std::function<R(Args...)>)
|