std::meta::template_arguments_of
De fr.cppreference.net
| 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
Aest un type ou un alias de type,Rreprésente le type. - Sinon, si
Aest un modèle de classe, un modèle de variable, un concept ou un alias de modèle,Rreprésente le modèle. - Sinon (
Aest un argument de modèle non-type), soitPle paramètre de modèle correspondant.
- Si
Pest de type référence,Rreprésente l'objet ou la fonction référencé(e) parA. - Si
Pest de type classe,Rreprésente l'objet paramètre de modèle correspondant. - Sinon,
Rreprésente la valeur deA.
- Si
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
Exécuter ce code
#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(C++26) |
vérifie si l'entité réfléchie est produite en substituant des arguments de modèle dans un modèle (fonction) |