Maison > développement back-end > C++ > le corps du texte

Une classe est-elle une spécialisation de modèle en C ?

DDD
Libérer: 2024-11-13 04:17:02
original
726 Les gens l'ont consulté

Is a Class a Template Specialization in C  ?

Une classe est-elle une spécialisation de modèle ?

En C , il peut être utile de déterminer si un type donné est une spécialisation d'un particulier modèle de classe. Par exemple, considérons le code suivant :

template<class T>
struct A {};

template<class CompareT>
void compare() {
    // is this A?
    cout << is_same< A<*> , CompareT >::value << endl; // A<?> ????
}
Copier après la connexion

Étant donné le code ci-dessus, comment pouvons-nous vérifier si CompareT est un A<> pour certains types *?

Solution :

En utilisant la métafonction de modèle is_specialization, vous pouvez vérifier si un type est une spécialisation d'un modèle de classe. Voici un exemple :

template<class T, template<class...> class Template>
struct is_specialization : std::false_type {};

template<template<class...> class Template, class... Args>
struct is_specialization<Template<Args...>, Template> : std::true_type {};

static_assert(is_specialization<std::vector<int>, std::vector>{}, "");
static_assert(!is_specialization<std::vector<int>, std::list>{}, "");
Copier après la connexion

Dans l'exemple ci-dessus, is_specialization prend deux arguments : T et Template. Si T est une spécialisation de Template, is_specialization est std :: true_type. Sinon, c'est std::false_type.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal