std::experimental::invocation_type, std::experimental::raw_invocation_type
Defined in header
<experimental/type_traits>
|
||
template<class>
struct raw_invocation_type; //undefined |
(1) | (library fundamentals TS) |
template<class>
struct invocation_type; //undefined |
(2) | (library fundamentals TS) |
Computes the invocation parameters when Fn
is called with the arguments ArgTypes...
, as in INVOKE(std::declval<Fn>(), std::declval<ArgTypes>()...), where INVOKE is the operation defined in Callable
.
The invocation parameters of the expression INVOKE(f, t1, t2, ..., tN) is defined as follows, where T1
is the (possibly cv-qualified) type of t1
and U1
is T1&
if t1
is an lvalue and T1&&
otherwise:
- If
f
is a pointer to a member function of a classT
, then the invocation parameters areU1
followed by the parameters off
matched byt2, ..., tN
. - If
N == 1
andf
is a pointer to member data of a classT
, then the invocation parameter isU1
. - If
f
is an object of class type, the invocation parameters are the parameters matchingt1, ..., tN
of the best viable function for the argumentst1, ..., tN
among the function call operators off
. - In all other cases, the invocations parameters are the parameters of
f
matchingt1, ..., tN
.
If an argument tI
matches an ellipsis in the function's parameter list, the corresponding invocation parameter is the result of applying the default argument promotions to tI
.
Fn
and all types in ArgTypes
can be any complete type, array of unknown bound, or (possibly cv-qualified) void
.
Contents |
[edit] Member types
Member type | Definition |
raw_invocation_type<Fn(ArgTypes...)>::type | R(T1, T2, ...), where:
Only defined if |
invocation_type<Fn(ArgTypes...)>::type | R(U1, U2, ...), where
Only defined if |
[edit] Helper types
template< class T >
using raw_invocation_type_t = typename raw_invocation_type<T>::type; |
(library fundamentals TS) | |
template< class T >
using invocation_type_t = typename invocation_type<T>::type; |
(library fundamentals TS) | |
[edit] Example
This section is incomplete Reason: no example |