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

Comment instancier explicitement une fonction de modèle en C ?

Barbara Streisand
Libérer: 2024-12-09 04:44:10
original
561 Les gens l'ont consulté

How Do I Explicitly Instantiate a Template Function in C  ?

Instancier explicitement une fonction de modèle

Dans ce scénario, vous souhaitez instancier une fonction de modèle avec un seul argument sans l'invoquer. L'instanciation explicite implique la création manuelle d'une instance du modèle sans utiliser son appel de fonction.

Vous avez spécifié la fonction de modèle suivante :

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

Lors de votre tentative d'instancier la fonction comme suit :

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

a entraîné les erreurs suivantes :

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

L'approche correcte pour instancier explicitement le La fonction est la suivante :

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

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

Contrairement à l'instanciation de modèle, la spécialisation de modèle implique la définition d'une implémentation spécifique pour un type de paramètre de modèle particulier. Pour spécialiser le modèle func pour les paramètres int, vous utiliserez la syntaxe suivante :

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

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

Remarquez les crochets angulaires après le modèle dans la syntaxe de spécialisation.

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