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

Pourquoi l'appel d'un modèle de fonction membre à partir d'une fonction basée sur un modèle nécessite-t-il le mot-clé « modèle » ?

Linda Hamilton
Libérer: 2024-11-03 15:58:02
original
425 Les gens l'ont consulté

Why Does Invoking a Member Function Template from a Templated Function Require the `template` Keyword?

Fonction membre d'invocation de classe basée sur un modèle à partir d'une fonction basée sur un modèle

Dans l'extrait de code fourni, l'appel d'un modèle de fonction membre à partir d'un autre modèle entraîne une erreur de compilation. Plus précisément, le code tente d'appeler A::f<3>() depuis g(). Cependant, cela échoue en raison d'un problème de syntaxe.

Pour résoudre ce problème, le mot-clé template doit être explicitement spécifié avant l'invocation de la fonction membre. En effet, selon la norme C '03 14.2/4, lorsque le nom d'une spécialisation de modèle de membre apparaît après une expression postfixée ou un identifiant qualifié qui dépend d'un paramètre de modèle, le nom du modèle de membre doit être préfixé par le mot-clé de modèle. .

Par conséquent, le code suivant est correct :

<code class="cpp">template<class T> void g()
{
   A<T> a;
   a.template f<3>();  // Explicitly specify 'template' keyword
}</code>
Copier après la connexion

En ajoutant le mot-clé template, le compilateur peut identifier correctement que f est un modèle membre du modèle de classe A, et il peut appeler avec succès A::f<3>().

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!