Namespaces
Variants

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

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
R operator ( ) ( Args... args ) const ;
(seit C++11)

Ruft das gespeicherte aufrufbare Funktionsziel mit den Parametern args auf.

Führt effektiv INVOKE<R> ( f, std:: forward < Args > ( args ) ... ) aus, wobei f das Zielobjekt von * this ist.

Inhaltsverzeichnis

Parameter

args - Parameter, die an die gespeicherte aufrufbare Funktion übergeben werden sollen

Rückgabewert

Keiner, falls R void ist. Andernfalls der Rückgabewert des Aufrufs des gespeicherten aufrufbaren Objekts.

Ausnahmen

Wirft std::bad_function_call falls * this kein aufrufbares Funktionsziel speichert, d.h. ! * this == true .

Beispiel

Das folgende Beispiel zeigt, wie std::function an andere Funktionen als Wert übergeben werden kann. Außerdem zeigt es, wie std::function Lambdas speichern kann.

#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);
}

Mögliche Ausgabe:

bad_function_call
1
2
42
Hi 42

Siehe auch

ruft das Ziel auf
(öffentliche Elementfunktion von std::move_only_function )
ruft die gespeicherte Funktion auf
(öffentliche Elementfunktion von std::reference_wrapper<T> )
die Ausnahme, die beim Aufruf eines leeren std::function geworfen wird
(Klasse)
(C++17) (C++23)
ruft ein beliebiges Callable Objekt mit gegebenen Argumenten auf mit Möglichkeit zur Rückgabetypspezifikation (seit C++23)
(Funktionstemplate)