Namespaces
Variants

std::experimental::ranges:: invoke

From cppreference.net
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 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 ) .
  • 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)