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) 는 다음과 같이 정의됩니다:
-
if
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
객체를 호출
및 반환 타입 지정 가능
(since C++23)
(함수 템플릿) |