Utiliser un modèle externe pour éviter l'instanciation de modèle
L'instanciation de modèle est une étape cruciale de la programmation C, où des instances de modèle spécifiques sont créées au moment de la compilation . Dans certains scénarios, il devient nécessaire de contrôler l'instanciation des modèles pour optimiser le temps de compilation et éviter les définitions redondantes. C'est là que le mot-clé extern template entre en jeu.
Modèles externes pour les modèles de fonctions
Lorsqu'il est utilisé avec des modèles de fonction, le modèle extern demande au compilateur de ne pas instancier le modèle spécifié. modèle au sein de l’unité de traduction actuelle. Cela signale qu'une instanciation de ce modèle sera trouvée ailleurs dans le programme. Ceci est particulièrement utile dans les scénarios où plusieurs fichiers sources instancient le même modèle avec des paramètres identiques, conduisant à plusieurs définitions que le compilateur doit supprimer.
Exemple :
Considérez le extrait de code suivant :
// header.h template <typename T> void f() { /* Body */} // source1.cpp #include "header.h" void something1() { f<int>(); } // source2.cpp #include "header.h" extern template void f<int>(); void something2() { f<int>(); }
Dans ce cas, le modèle extern dans source2.cpp informe le compilateur que le f
Modèles externes pour les modèles de classe
Semblable aux modèles de fonction, le modèle externe peut également être utilisé avec des modèles de classe. Ceci est fait pour éviter plusieurs instanciations de classes de modèles avec les mêmes paramètres.
Exemple :
// header.h template <typename T> class MyClass { /* Body */} // source1.cpp #include "header.h" MyClass<int> obj1; // source2.cpp #include "header.h" extern template class MyClass<int>; MyClass<int> obj2;
Ici, le modèle extern dans source2.cpp garantit que le MaClasse
Directives d'utilisation du modèle externe
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!