std::experimental::ranges:: invoke
|
Определено в заголовочном файле
<experimental/ranges/functional>
|
||
|
template
<
class
F,
class
...
Args
>
std:: result_of_t < F && ( Args && ... ) > invoke ( F && f, Args && ... args ) ; |
(ranges TS) | |
Вызовите Callable объект f с параметрами args и верните результат, как если бы выполнялось return INVOKE ( std:: forward < F > ( f ) , std:: forward < Args > ( args ) ... ) ; , где INVOKE(f, t1, t2, ..., tN) определяется следующим образом:
-
если
f
является
указателем на член-функцию
класса
T:
-
- Если std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value равно true , тогда INVOKE ( f, t1, t2, ..., tN ) эквивалентно ( t1. * f ) ( t2, ..., tN ) ,
- иначе, INVOKE ( f, t1, t2, ..., tN ) эквивалентно ( ( * t1 ) . * f ) ( t2, ..., tN ) .
-
в противном случае, если N == 1 и
f
является
указателем на член данных
класса
T:
-
- Если std:: is_base_of < T, std:: decay_t < decltype ( t1 ) >> :: value равно true , тогда INVOKE ( f, t1 ) эквивалентно t1. * f ,
- иначе INVOKE ( f, t1 ) эквивалентно ( * t1 ) . * f .
- в противном случае, INVOKE ( f, t1, t2, ..., tN ) эквивалентно f ( t1, t2, ..., tN ) (то есть, f является FunctionObject ).
Параметры
| f | - | Callable объект для вызова |
| args | - | аргументы для передачи в f |
Смотрите также
|
(C++17)
(C++23)
|
вызывает любой
Callable
объект с заданными аргументами
с возможностью указания возвращаемого типа
(начиная с C++23)
(шаблон функции) |