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>, если его можно сконструировать из этого аргумента.
Пример
См. также
| присваивает новую цель (открытая функция-член std::function<R(Args...)>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/move_only_function/operator%3D