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 and surrogate call functions 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
.
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
|
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) | |
Example
This section is incomplete
Reason: no example |
See also
C++ documentation
for
Reflection TS
|