std::function::operator=
De cppreference.com
<tbody>
</tbody>
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);.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.
| ||
Valor de retorno
*this.
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).
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ó. |
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) |