std::experimental:: invocation_type, std::experimental:: raw_invocation_type
|
헤더에 정의됨
<experimental/type_traits>
|
||
|
template
<
class
>
struct
raw_invocation_type
;
//정의되지 않음
|
(1) | (라이브러리 fundamentals TS) |
|
template
<
class
>
struct
invocation_type
;
//정의되지 않음
|
(2) | (라이브러리 fundamentals TS) |
Fn
이
ArgTypes...
인수들로 호출될 때의
호출 매개변수들
을 계산합니다. 이는
INVOKE
(
std::
declval
<
Fn
>
(
)
,
std::
declval
<
ArgTypes
>
(
)
...
)
와 같이 수행되며, 여기서
INVOKE
는
Callable
에 정의된 연산입니다.
표현식
INVOKE
(
f, t1, t2, ..., tN
)
의
호출 매개변수
는 다음과 같이 정의되며, 여기서
T1
은
t1
의 (cv 한정자가 있을 수 있는) 타입이고,
U1
은
t1
이 lvalue일 경우
T1&
, 그렇지 않을 경우
T1&&
입니다:
-
만약
f가 클래스T의 멤버 함수에 대한 포인터라면, 호출 매개변수는U1이 먼저 오고 그 뒤에f의 매개변수 중t2, ..., tN에 매칭되는 것들이 옵니다. -
만약
N == 1이고f가 클래스T의 멤버 데이터에 대한 포인터라면, 호출 매개변수는U1입니다. -
만약
f가 클래스 타입의 객체라면, 호출 매개변수는f의 함수 호출 연산자와 대리 호출 함수들 중t1, ..., tN인수에 대해 가장 적합한 함수의t1, ..., tN에 매칭되는 매개변수들입니다. -
다른 모든 경우에서, 호출 매개변수는
f의 매개변수 중t1, ..., tN에 매칭되는 것들입니다.
만약 인수
tI
가 함수의 매개변수 목록에서 생략 부호와 일치하면, 해당 호출 매개변수는
tI
에 기본 인수 승격을 적용한 결과입니다.
Fn
와
ArgTypes
내의 모든 타입은 완전한 타입, 알려지지 않은 경계를 가진 배열, 또는 (cv 한정자가 있을 수 있는)
void
일 수 있습니다.
목차 |
멤버 타입
| 멤버 타입 | 정의 |
| raw_invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
T1, T2, ...
)
, 여기서:
|
| invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
U1, U2, ...
)
, 여기서
|
헬퍼 타입
|
template
<
class
T
>
using raw_invocation_type_t = typename raw_invocation_type < T > :: type ; |
(라이브러리 펀더멘털 TS) | |
|
template
<
class
T
>
using invocation_type_t = typename invocation_type < T > :: type ; |
(라이브러리 펀더멘털 TS) | |
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
참고 항목
|
C++ 문서
for
Reflection TS
|