Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte de lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
Objetos función
Invocación de función
(C++17)(C++23)
Objeto función identidad
(C++20)
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)
(C++14)

Enlazadores 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++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*)
 
 
R operator()( Args... args ) const;
(desde C++11)

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

Efectivamente hace INVOKE<R>(f, std::forward<Args>(args)...), donde f es el objeto destino de *this.

Parámetros

args - parámetros para pasar a la función almacenada invocable objetivo

Valor de retorno

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

Excepciones

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

Ejemplo

El siguiente ejemplo muestra cómo std::function puede ser pasado a otras funciones por valor. También muestra cómo std::function puede almacenar lambdas.

#include <functional>
#include <iostream>
void call(std::function<int()> f) // can be passed by value
{ 
    std::cout << f() << '\n';
}
int normal_function()
{
    return 42;
}
int main()
{
    int n = 1;
    std::function<int()> f;
    try
    {
        call(f);
    }
    catch (const std::bad_function_call& ex)
    {
        std::cout << ex.what() << '\n';
    }
    f = [&n](){ return n; };
    call(f);
    n = 2;
    call(f);
    f = normal_function;
    call(f);
    std::function<void(std::string, int)> g;
    g = [](std::string str, int i) { std::cout << str << ' ' << i << '\n'; };
    g("Hi", 052);
}

Salida posible:

bad_function_call
1
2
42
Hi 42

Véase también

invoca el objetivo
(función miembro pública de std::move_only_function )
llama a la función almacenada
(función miembro pública de std::reference_wrapper<T> )
la excepción lanzada al invocar un std::function vacío
(clase)
(C++17) (C++23)
invoca cualquier objeto Callable con los argumentos dados y posibilidad de especificar el tipo de retorno (desde C++23)
(plantilla de función)