Namespaces
Variants

std::experimental:: invocation_type, std::experimental:: raw_invocation_type

From cppreference.net
헤더에 정의됨 <experimental/type_traits>
template < class >

struct raw_invocation_type ; //정의되지 않음

template < class Fn, class ... ArgTypes >

struct raw_invocation_type < Fn ( ArgTypes... ) > ;
(1) (라이브러리 fundamentals TS)
template < class >

struct invocation_type ; //정의되지 않음

template < class Fn, class ... ArgTypes >

struct invocation_type < Fn ( ArgTypes... ) > ;
(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, ... ) , 여기서:

Fn ArgTypes... 인수로 평가되지 않은 컨텍스트에서 호출 가능한 경우에만 정의됩니다.

invocation_type < Fn ( ArgTypes... ) > :: type R ( U1, U2, ... ) , 여기서

Fn ArgTypes... 인수로 평가되지 않은 컨텍스트에서 호출 가능한 경우에만 정의됩니다.

헬퍼 타입

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