Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <experimental/type_traits>
template < class >

struct raw_invocation_type ; //indéfini

template < class Fn, class ... ArgTypes >

struct raw_invocation_type < Fn ( ArgTypes... ) > ;
(1) (library fundamentals TS)
template < class >

struct invocation_type ; //indéfini

template < class Fn, class ... ArgTypes >

struct invocation_type < Fn ( ArgTypes... ) > ;
(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 f est un pointeur vers une fonction membre d'une classe T , alors les paramètres d'invocation sont U1 suivi des paramètres de f correspondant à t2, ..., tN .
  • Si N == 1 et f est un pointeur vers un membre de données d'une classe T , alors le paramètre d'invocation est U1 .
  • Si f est un objet de type classe, les paramètres d'invocation sont les paramètres correspondant à t1, ..., tN de la fonction viable optimale pour les arguments t1, ..., tN parmi les opérateurs d'appel de fonction et les fonctions d'appel substitut de f .
  • Dans tous les autres cas, les paramètres d'invocation sont les paramètres de f correspondant à 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 Fn peut être appelé avec les arguments ArgTypes... dans un contexte non évalué.

invocation_type < Fn ( ArgTypes... ) > :: type R ( U1, U2, ... ) , où

Défini uniquement si Fn peut être appelé avec les arguments ArgTypes... dans un contexte non évalué.

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

Voir aussi

Documentation C++ pour Reflection TS