Spec-Zone.ru › C++

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

function& operator=( const function& other );
(1) (с C++11)
function& operator=( function&& other );
(2) (с C++11)
function& operator=( std::nullptr_t ) noexcept;
(3) (с C++11)
template< class F > 
function& operator=( F&& f );
(4) (с C++11)
template< class F > 
function& operator=( std::reference_wrapper<F> f ) noexcept;
(5) (с C++11)

Присваивает новое целевое значение std::function.

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

Параметры

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

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

*this

Примечания

Даже до того, как поддержка аллокаторов была удалена из std::function в C++17, эти операторы присваивания используют аллокатор по умолчанию, а не аллокатор *this или other (см. LWG issue 2386).

Отчеты об ошибках

Следующие изменения поведения были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применён к Поведение, как опубликовано Правильное поведение
LWG 2132 C++11 перегрузка, принимающая вызываемый объект, могла быть неоднозначной ограничена
LWG 2401 C++11 оператор присваивания из std::nullptr_t не должен был быть noexcept требуется

См. также

operator=
(C++23)
заменяет или уничтожает целевое значение
(публичный член-функция std::move_only_function)
assign
(удалено в C++17)
присваивает новое целевое значение
(публичный член-функция)

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

Spec-Zone.ru

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