std::experimental::ranges::invoke
Von cppreference.com
< cpp | experimental | ranges
| Definiert in Header <experimental/ranges/functional> |
||
| template< class F, class... Args > std::result_of_t<F&&(Args&&...)> invoke( F&& f, Args&&... args ); |
(Ranges TS) | |
Ruft das Callable-Objekt f mit den Parametern args auf und gibt das Ergebnis zurück, als ob durch return INVOKE(std::forward<F>(f), std::forward<Args>(args)...);, wobei INVOKE(f, t1, t2, ..., tN) wie folgt definiert ist
- wenn f ein Zeiger auf eine Memberfunktion der Klasse
Tist
- Wenn std::is_base_of<T, std::decay_t<decltype(t1)>>::value true ist, dann ist INVOKE(f, t1, t2, ..., tN) äquivalent zu (t1.*f)(t2, ..., tN),
- andernfalls ist INVOKE(f, t1, t2, ..., tN) äquivalent zu ((*t1).*f)(t2, ..., tN).
- andernfalls, wenn N == 1 und f ein Zeiger auf ein Datenelement der Klasse
Tist
- Wenn std::is_base_of<T, std::decay_t<decltype(t1)>>::value true ist, dann ist INVOKE(f, t1) äquivalent zu t1.*f,
- andernfalls ist INVOKE(f, t1) äquivalent zu (*t1).*f.
- andernfalls ist INVOKE(f, t1, t2, ..., tN) äquivalent zu f(t1, t2, ..., tN) (d. h. f ist ein FunctionObject).
[bearbeiten] Parameter
| f | - | Callable-Objekt, das aufgerufen werden soll |
| args | - | Argumente, die an f übergeben werden sollen |
[bearbeiten] Siehe auch
| (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) |