std::experimental::ranges:: invoke
|
Definiert im Header
<experimental/ranges/functional>
|
||
|
template
<
class
F,
class
...
Args
>
std:: result_of_t < F && ( Args && ... ) > invoke ( F && f, Args && ... args ) ; |
(ranges TS) | |
Rufen Sie das Callable -Objekt f mit den Parametern args auf und geben Sie 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:
-
if
f
ein
Zeiger auf eine Elementfunktion
der Klasse
Tist:
-
- Falls 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 Datenelement
der Klasse
Tist:
-
- Falls std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value true ist, dann entspricht INVOKE ( f, t1 ) t1. * f .
- Andernfalls entspricht INVOKE ( f, t1 ) ( * t1 ) . * f .
- andernfalls ist INVOKE ( f, t1, t2, ..., tN ) äquivalent zu f ( t1, t2, ..., tN ) (das heißt, f ist ein FunctionObject ).
Parameter
| f | - | Callable aufzurufendes Objekt |
| args | - | an f zu übergebende Argumente |
Siehe auch
|
(C++17)
(C++23)
|
ruft jedes
Callable
Objekt mit gegebenen Argumenten auf
mit Möglichkeit zur Spezifikation des Rückgabetyps
(seit C++23)
(Funktions-Template) |