std::experimental:: invocation_type, std::experimental:: raw_invocation_type
|
Défini dans l'en-tête
<experimental/type_traits>
|
||
|
template
<
class
>
struct
raw_invocation_type
;
//indéfini
|
(1) | (library fundamentals TS) |
|
template
<
class
>
struct
invocation_type
;
//indéfini
|
(2) | (library fundamentals TS) |
Calcule les
paramètres d'appel
lorsque
Fn
est appelé avec les arguments
ArgTypes...
, comme dans
INVOKE
(
std::
declval
<
Fn
>
(
)
,
std::
declval
<
ArgTypes
>
(
)
...
)
, où
INVOKE
est l'opération définie dans
Callable
.
Les
paramètres d'invocation
de l'expression
INVOKE
(
f, t1, t2, ..., tN
)
sont définis comme suit, où
T1
est le type (éventuellement qualifié cv) de
t1
et
U1
est
T1&
si
t1
est une lvalue et
T1&&
sinon :
-
Si
fest un pointeur vers une fonction membre d'une classeT, alors les paramètres d'invocation sontU1suivi des paramètres defcorrespondant àt2, ..., tN. -
Si
N == 1etfest un pointeur vers un membre de données d'une classeT, alors le paramètre d'invocation estU1. -
Si
fest un objet de type classe, les paramètres d'invocation sont les paramètres correspondant àt1, ..., tNde la fonction viable optimale pour les argumentst1, ..., tNparmi les opérateurs d'appel de fonction et les fonctions d'appel substitut def. -
Dans tous les autres cas, les paramètres d'invocation sont les paramètres de
fcorrespondant àt1, ..., tN.
Si un argument
tI
correspond à une ellipse dans la liste des paramètres de la fonction, le paramètre d'invocation correspondant est le résultat de l'application des promotions d'arguments par défaut à
tI
.
Fn
et tous les types dans
ArgTypes
peuvent être n'importe quel type complet, tableau de limite inconnue, ou
void
(éventuellement qualifié cv).
Table des matières |
Types membres
| Type de membre | Définition |
| raw_invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
T1, T2, ...
)
, où :
Défini uniquement si
|
| invocation_type < Fn ( ArgTypes... ) > :: type |
R
(
U1, U2, ...
)
, où
Défini uniquement si
|
Types auxiliaires
|
template
<
class
T
>
using raw_invocation_type_t = typename raw_invocation_type < T > :: type ; |
(spécification technique des fondamentaux de bibliothèque) | |
|
template
<
class
T
>
using invocation_type_t = typename invocation_type < T > :: type ; |
(spécification technique des fondamentaux de bibliothèque) | |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
Documentation C++
pour
Reflection TS
|