Spec-Zone.ru › C++

std::move_only_function::operator=

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>, если его можно сконструировать из этого аргумента.

См. также

operator=
присваивает новую цель
(общедоступный член-функции std::function<R(Args...)>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/move_only_function/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API