Espacios de nombres
Variantes

std::function::operator()

De cppreference.com
 
 
Biblioteca de servicios
 
Objetos función
Envoltorios de funciones
(C++11)
(C++11)
Aplicación parcial de funciones
(C++20)
(C++11)
Invocación de funciones
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de referencias
(C++11)(C++11)
Envoltorios de operador transparentes
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
Negadores
(C++17)
Buscadores
Comparadores restringidos
Vinculadores y adaptadores antiguos
(hasta C++17)
(hasta C++17)
(hasta C++17)
(hasta C++17)
(hasta C++17)(hasta C++17)(hasta C++17)(hasta C++17)
(hasta C++20)
(hasta C++20)
(hasta C++17)(hasta C++17)
(hasta C++17)(hasta C++17)

(hasta C++17)
(hasta C++17)(hasta C++17)(hasta C++17)(hasta C++17)
(hasta C++20)
(hasta C++20)
 
 
<tbody> </tbody>
R operator()( Args... args ) const;
(desde C++11)

Invoca el destino de la función invocable almacenada con los parámetros args.

Efectivamente hace INVOKE<R>(f, std::forward<Args>(args)...), donde f es el objeto destino de *this e INVOKE es la operación descrita en Callable.

Parámetros

args - Los parámetros a pasar al destino de la función invocable almacenada.

Valor de retorno

Ninguno si R es void. De lo contrario, el valor de retorno de la invocación del objeto invocable almacenado.

Excepciones

  • std::bad_function_call si *this no almacena un destino de función invocable, es decir !*this == true.

Ejemplo

El siguiente ejemplo muestra cómo se puede pasar std::function a otras funciones por valor. Además, muestra cómo std::function puede almacenar lambdas.

#include <iostream>
#include <functional>

void llamar(std::function<int()> f)  // puede pasarse por valor
{ 
    std::cout << f() << '\n';
}

int funcion_normal() 
{
    return 42;
}

int main()
{
    int n = 1;
    std::function<int()> f = [&n](){ return n; };
    llamar(f);

    n = 2;
    llamar(f); 

    f = funcion_normal; 
    llamar(f);
}

Salida:

1
2
42

Véase también

Invoca al objetivo.
(función miembro pública de std::move_only_function<R(Args...) cv ref noexcept(noex)>) [editar]
llama a la función almacenada
(función miembro pública de std::reference_wrapper) [editar]
La excepción que se lanza cuando se invoca un objeto std::function vacío.
(clase) [editar]
(C++17)(C++23)
Invoca cualquier objeto Callable con los argumentos dados y la posibilidad de especificar el tipo de retorno. (desde C++23)
(plantilla de función) [editar]