Namespaces
Variants

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

Von de.cppreference.net
 
 
Hilfsbibliothek
Sprachunterstützung
Typunterstützung (grundlegende Typen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmhilfsmittel
Variadische Funktionen
Koroutinenunterstützung (C++20)
Vertragsunterstützung (C++26)
Dreivektorenvergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationsoperatoren (veraltet in C++20)
Ganzzahlvergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Funktionsobjekte
Funktionsaufruf
(C++17)(C++23)
Identitätsfunktionsobjekt
(C++20)
Transparente Operatorwrapper
(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)

Alte Binder und Adaptoren
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
(bis C++17*)(bis C++17*)
(bis C++17*)(bis C++17*)

(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis 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.

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)