std::function::operator=
De cppreference.com
< cpp | utility | functional | function
function& operator=( const function& other ); |
(1) | (desde C++11) |
function& operator=( function&& other ); |
(2) | (desde C++11) |
function& operator=( std::nullptr_t ) noexcept; |
(3) | (desde C++11) |
template< class F > function& operator=( F&& f ); |
(4) | (desde C++11) |
template< class F > function& operator=( std::reference_wrapper<F> f ) noexcept; |
(5) | (desde C++11) |
Asigna un nuevo destino a std::function
.
1) Asigna una copia del destino de
other
, como si se ejecutara function(other).swap(*this);2) Mueve el destino of
other
to *this. other
se encuentra en un estado válido con un valor no especificado.3) Se deshace del destino actual. *this está vacío después de la llamada.
4) Establece el destino de *this en el invocable
f
, como si se ejecutara function(std::forward<F>(f)).swap(*this);. Este operador no participa en la resolución de sobrecarga a menos que f
sea Callable para los tipos de argumento Args...
y el tipo de retorno R
.5) Establece el destino de *this en una copia de
f
, como si se ejecutara function(f).swap(*this);.Contenido |
[editar] Parámetros
other | - | Otro objeto std::function del que copiar el destino.
|
f | - | Un invocable con el que inicializar el destino. |
Requisitos de tipo | ||
-F debe satisfacer los requisitos de Callable.
|
[editar] Valor de retorno
*this.
[editar] Notas
Incluso antes de que se eliminara la compatibilidad con el asignador de std::function
en C++17, estos operadores de asignación usan el asignador por defecto en lugar del asignador de *this o el asignador de other
(véase Asunto LWG 2386).
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2132 | C++11 | La sobrecarga que toma un objeto Callable podría ser ambigua. | Se restringió. |
LWG 2401 | C++11 | No se requería que el operador de asignación de std::nullptr_t fuera noexcept.
|
Se requirió. |
[editar] Véase también
(C++23) |
Reemplaza o destruye el objetivo. (función miembro pública de std::move_only_function<R(Args...) cv ref noexcept(noex)> )
|
(eliminado en C++17) |
Asigna un nuevo destino. (función miembro pública) |