std::experimental::ranges:: invoke
|
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
f
es un
puntero a función miembro
de la clase
T:
-
- 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 ) .
-
de lo contrario, si N == 1 y
f
es un
pointer to data member
de la clase
T:
-
- 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) |