std::function<R(Args...)>::operator()
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>
)
|
|
|
(C++11)
|
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) |