Namespaces
Variants

std::meta::template_arguments_of

De fr.cppreference.net
< cpp | meta
 
 
 
Bibliothèque de réflexion
 
Types et requêtes de réflexion
Requêtes de réflexion
Requêtes de disposition de réflexion
Propriétés de type
Requêtes de propriétés de type
 
Défini dans l'en-tête <meta>
consteval std::vector<std::meta::info> template_arguments_of( std::meta::info r );
(depuis C++26)

Renvoie un vecteur contenant les réflexions des arguments de modèle utilisés pour instancier l'entité représentée par r, dans l'ordre dans lequel ils apparaissent dans la liste des arguments de modèle.

Pour un argument de modèle donné A, la valeur de réflexion correspondante R est déterminée comme suit :

  • Si A est un type ou un alias de type, R représente le type.
  • Sinon, si A est un modèle de classe, un modèle de variable, un concept ou un alias de modèle, R représente le modèle.
  • Sinon (A est un argument de modèle non-type), soit P le paramètre de modèle correspondant.
  • Si P est de type référence, R représente l'objet ou la fonction référencé(e) par A.
  • Si P est de type classe, R représente l'objet paramètre de modèle correspondant.
  • Sinon, R représente la valeur de A.

Paramètres

r - une valeur de réflexion

Valeur de retour

Un vecteur contenant les réflexions des arguments de modèle de ce que r représente.

Exceptions

Lève std::meta::exception sauf si std::meta::has_template_arguments(r) est true (c'est-à-dire r représente une entité instanciée à partir d'un modèle).

Exemple

#include <meta>
#include <type_traits>

static_assert(template_arguments_of(^^std::void_t<int>)[0] == ^^int);
static_assert(template_arguments_of(^^std::enable_if<true>).size() == 2);
static_assert(template_arguments_of(^^std::enable_if<true>)[0] ==
              std::meta::reflect_constant(true));
static_assert(template_arguments_of(^^std::enable_if<true>)[1] == ^^void);

int main() {}

Voir aussi

Template:cpp/meta/dsc is template
vérifie si l'entité réfléchie est produite en substituant des arguments de modèle dans un modèle
(fonction)