Maison > développement back-end > C++ > Comment instancier explicitement des fonctions de modèle en C ?

Comment instancier explicitement des fonctions de modèle en C ?

Barbara Streisand
Libérer: 2024-12-09 00:40:10
original
184 Les gens l'ont consulté

How to Explicitly Instantiate Template Functions in C  ?

Instanciation explicite des fonctions de modèle

En C, les fonctions de modèle fournissent un moyen de définir des opérations qui peuvent opérer sur différents types. Parfois, il devient nécessaire d’instancier explicitement une fonction modèle sans l’appeler directement. Cela peut être utile dans les situations où le compilateur ne peut pas déduire automatiquement les arguments du modèle.

Considérons l'exemple suivant :

template <class T> int function_name(T a);
Copier après la connexion

Pour instancier explicitement cette fonction pour des entiers, on peut tenter d'écrire :

template int function_name<int>(int);
Copier après la connexion

Cependant, cette approche entraîne les erreurs suivantes :

error: expected primary-expression before 'template'
error: expected `;' before 'template'
Copier après la connexion

Pour correctement explicitement instanciez la fonction, utilisez la syntaxe suivante :

template <typename T> void func(T param); // definition

template void func<int>(int); // explicit instantiation
Copier après la connexion

Il est important de noter que ce code effectue une instanciation explicite, pas une spécialisation. La syntaxe de spécialisation diffère légèrement :

template <typename T> void func(T param); // definition

template <> void func<int>(int); // specialization
Copier après la connexion

L'instanciation explicite garantit que le code de la fonction de modèle instanciée est généré par le compilateur, le rendant disponible pour une utilisation sans qu'il soit nécessaire d'appeler directement la fonction de modèle avec le code approprié. tapez des arguments.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal