std::experimental::ranges:: invoke
|
Défini dans l'en-tête
<experimental/ranges/functional>
|
||
|
template
<
class
F,
class
...
Args
>
std:: result_of_t < F && ( Args && ... ) > invoke ( F && f, Args && ... args ) ; |
(ranges TS) | |
Invoquez l'objet Callable f avec les paramètres args et retournez le résultat, comme par return INVOKE ( std:: forward < F > ( f ) , std:: forward < Args > ( args ) ... ) ; , où INVOKE(f, t1, t2, ..., tN) est défini comme suit :
-
si
f
est un
pointeur vers une fonction membre
de la classe
T:
-
- Si std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value est true , alors INVOKE ( f, t1, t2, ..., tN ) est équivalent à ( t1. * f ) ( t2, ..., tN ) ,
- sinon, INVOKE ( f, t1, t2, ..., tN ) est équivalent à ( ( * t1 ) . * f ) ( t2, ..., tN ) .
-
sinon, si N == 1 et
f
est un
pointeur vers membre de données
de la classe
T:
-
- Si std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value est true , alors INVOKE ( f, t1 ) est équivalent à t1. * f ,
- sinon, INVOKE ( f, t1 ) est équivalent à ( * t1 ) . * f .
- sinon, INVOKE ( f, t1, t2, ..., tN ) est équivalent à f ( t1, t2, ..., tN ) (c'est-à-dire que f est un FunctionObject ).
Paramètres
| f | - | Callable objet invocable |
| args | - | arguments à passer à f |
Voir aussi
|
(C++17)
(C++23)
|
invoque tout
Callable
objet avec les arguments donnés
et possibilité de spécifier le type de retour
(depuis C++23)
(modèle de fonction) |