Maison > développement back-end > C++ > Pourquoi l'invocation d'une fonction membre de modèle dans une fonction de modèle échoue-t-elle en C ?

Pourquoi l'invocation d'une fonction membre de modèle dans une fonction de modèle échoue-t-elle en C ?

Mary-Kate Olsen
Libérer: 2024-11-02 02:57:30
original
1022 Les gens l'ont consulté

Why Does Template Member Function Invocation Within a Template Function Fail in C  ?

Invocation d'une fonction membre de modèle dans une fonction de modèle

Dans le code donné, une tentative d'invocation d'une fonction membre de modèle f dans une fonction de modèle g échoue avec des erreurs de compilation :

<code class="cpp">template<class X> struct A {
   template<int I> void f() {}
};

template<class T> void g()
{
   A<T> a;
   a.f<3>();  // Compilation fails here (Line 18)
}</code>
Copier après la connexion

Selon la norme C (14.2/4), lorsqu'une spécialisation de modèle membre est appelée après un ., le mot-clé template doit être explicitement spécifié pour la différencier d'un non- fonction membre du modèle.

Pour résoudre l'erreur de compilation, le code doit être modifié comme suit :

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

En ajoutant le mot-clé template, le compilateur reconnaît que la fonction invoquée est un modèle membre spécialisation, résolvant l'ambiguïté et permettant au code de se compiler avec succès.

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