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

Pourquoi GCC ne parvient-il pas à compiler les spécialisations explicites des modèles de fonctions membres au sein d'une classe ?

DDD
Libérer: 2024-11-24 12:52:43
original
342 Les gens l'ont consulté

Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?

Erreur GCC : spécialisation explicite dans une portée non-espace de noms

Question :

Pourquoi le code suivant ne parvient pas à être compilé dans GCC lors de la spécialisation explicite d'un modèle de fonction membre dans un classe ?

template<typename T>
struct Widget
{
    template<typename U>
    void foo(U)
    {
    }

    template<>
    void foo(int*)
    {
    }
};
Copier après la connexion

Réponse :

Selon le standard C ([temp.expl.spec], paragraphe 2), les spécialisations explicites peuvent être déclarées dans n'importe quel portée dans laquelle le modèle principal correspondant peut être défini. Par conséquent, le code devrait également être compilé dans GCC.

Bogue et rapports GCC :

Cet échec de compilation dans GCC est probablement un bug. Pour le signaler, suivez ces étapes :

  1. Créez un rapport de bug sur https://gcc.gnus.org/bugzilla/index.cgi.
  2. Attribuez le composant "C" et la version appropriée de GCC (par exemple, "8").
  3. Fournissez une description du problème, y compris le message d'erreur que vous avez reçu et le message attendu. comportement.
  4. Joignez un extrait de code minimal reproductible (par exemple, le code que vous avez fourni) au rapport.

Référence standard :

Le paragraphe 2 de la section standard C [temp.expl.spec] indique :

Une spécialisation explicite peut être déclarée dans toute portée dans laquelle le modèle principal correspondant peut être défini.

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