std::function::operator()
De cppreference.com
<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
*thisno 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.
Ejecuta este código
#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
(C++23) |
Invoca al objetivo. (función miembro pública de std::move_only_function<R(Args...) cv ref noexcept(noex)>)
|
| llama a la función almacenada (función miembro pública de std::reference_wrapper)
| |
(C++11) |
La excepción que se lanza cuando se invoca un objeto std::function vacío. (clase) |
(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) |