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

Comment les paramètres de modèle de modèle peuvent-ils être utilisés pour créer des fonctions génériques avec plusieurs implémentations ?

DDD
Libérer: 2024-11-03 05:54:30
original
363 Les gens l'ont consulté

How can Template Template Parameters be Used to Create Generic Functions with Multiple Implementations?

Utilisation des paramètres de modèle de modèle en C

Considérez un scénario dans lequel vous disposez de plusieurs fonctions, telles que a() et b(), qui effectuer des tâches similaires avec différentes implémentations internes. Pour éviter la redondance du code, vous pouvez créer une fonction générique à l'aide de modèles. Cependant, si a() et b() sont eux-mêmes génériques, implémenter la fonction externe comme modèle peut ne pas suffire.

Dans ce contexte, vous pouvez recourir aux paramètres de modèle de modèle. Bien que les modèles acceptent généralement des types, des paramètres de type de modèle ou des valeurs, vous ne pouvez pas transmettre directement une fonction de modèle de modèle en tant que type car elle nécessite une instanciation.

Pour surmonter ce problème, vous pouvez utiliser une solution de contournement impliquant des structures factices :

<code class="cpp">template <typename T>
struct a {
    static void foo() {}
};

template <typename T>
struct b {
    static void foo() {}
};</code>
Copier après la connexion

Ces structures agissent comme des espaces réservés pour le paramètre de modèle de modèle. La fonction elle-même devient :

<code class="cpp">template <template <typename P> class T>
void function() {
    T<SomeObj>::foo();
    T<SomeOtherObj>::foo();
}</code>
Copier après la connexion

Vous pouvez désormais utiliser la fonction générique avec différentes implémentations de foo() en passant le modèle de structure factice approprié :

<code class="cpp">int main() {
    function<a>();
    function<b>();
}</code>
Copier après la connexion

Alors que les pointeurs de fonction fournissent un solution de contournement plus simple dans ce scénario spécifique, les paramètres de modèle de modèle offrent une solution plus générale aux problèmes nécessitant des fonctionnalités génériques avec plusieurs implémentations.

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