std::function<R(Args...)>::operator()
Von cppreference.com
< cpp | utility | functional | function
| R operator()( Args... args ) const; |
(seit C++11) | |
Ruft das gespeicherte aufrufbare Funktionsziel mit den Parametern args auf.
Entspricht INVOKE<R>(f, std::forward<Args>(args)...), wobei f das Zielobjekt von *this ist.
Inhalt |
[bearbeiten] Parameter
| args | - | Parameter, die an das gespeicherte aufrufbare Funktionsziel übergeben werden sollen |
[bearbeiten] Rückgabewert
Nichts, wenn R void ist. Andernfalls der Rückgabewert des Aufrufs des gespeicherten aufrufbaren Objekts.
[bearbeiten] Ausnahmen
Wirft std::bad_function_call, wenn *this kein aufrufbares Funktionsziel speichert, d.h. !*this == true.
[bearbeiten] Beispiel
Das folgende Beispiel zeigt, wie std::function per Wert an andere Funktionen übergeben werden kann. Außerdem zeigt es, wie std::function Lambdas speichern kann.
Führen Sie diesen Code aus
#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
[bearbeiten] Siehe auch
| ruft das Ziel auf (public member function of std::move_only_function) | |
| ruft die gespeicherte Funktion auf (öffentliche Member-Funktion von std::reference_wrapper<T>) | |
| (C++11) |
die Ausnahme, die beim Aufruf einer leeren std::function ausgelöst wird (Klasse) |
| (C++17)(C++23) |
ruft jedes Callable-Objekt mit gegebenen Argumenten auf und der Möglichkeit, den Rückgabetyp anzugeben(seit C++23) (Funktions-Template) |