Namespaces
Variants

std::experimental::ranges:: invoke

From cppreference.net
Definido en el encabezado <experimental/ranges/functional>
template < class F, class ... Args >
std:: result_of_t < F && ( Args && ... ) > invoke ( F && f, Args && ... args ) ;
(ranges TS)

Invocar el objeto Callable f con los parámetros args , y devolver el resultado, como si fuera mediante return INVOKE ( std:: forward < F > ( f ) , std:: forward < Args > ( args ) ... ) ; , donde INVOKE(f, t1, t2, ..., tN) se define de la siguiente manera:

  • Si std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value es true , entonces INVOKE ( f, t1, t2, ..., tN ) es equivalente a ( t1. * f ) ( t2, ..., tN ) ,
  • de lo contrario, INVOKE ( f, t1, t2, ..., tN ) es equivalente a ( ( * t1 ) . * f ) ( t2, ..., tN ) .
  • Si std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value es true , entonces INVOKE ( f, t1 ) es equivalente a t1. * f ,
  • de lo contrario, INVOKE ( f, t1 ) es equivalente a ( * t1 ) . * f .
  • de lo contrario, INVOKE ( f, t1, t2, ..., tN ) es equivalente a f ( t1, t2, ..., tN ) (es decir, f es un FunctionObject ).

Parámetros

f - Callable objeto invocable
args - argumentos para pasar a f

Véase también

(C++17) (C++23)
invoca cualquier Callable object con los argumentos dados y posibilidad de especificar el tipo de retorno (since C++23)
(plantilla de función)