"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi GCC ne parvient-il pas à compiler une spécialisation explicite dans une portée autre que l'espace de noms ?

Pourquoi GCC ne parvient-il pas à compiler une spécialisation explicite dans une portée autre que l'espace de noms ?

Publié le 2024-12-21
Parcourir:307

Why Does GCC Fail to Compile Explicit Specialization in Non-Namespace Scope?

Spécialisation explicite dans la portée non-espace de noms

Le code donné ne parvient pas à être compilé dans GCC malgré une compilation réussie dans Clang. Selon le standard C ([temp.expl.spec]), des spécialisations explicites peuvent être déclarées dans n'importe quelle portée où le modèle principal correspondant pourrait être défini.

Ce comportement semble être un bug dans GCC. Selon CWG 727, la règle de [temp.expl.spec] concernant la spécialisation explicite a été modifiée pour permettre de telles déclarations dans n'importe quelle portée pertinente.

Portée de la spécialisation explicite

La norme d'origine stipulait que la spécialisation explicite devait être déclarée dans un espace de noms entourant le modèle spécialisé. Cependant, la norme actuelle autorise une spécialisation explicite dans n'importe quelle portée où le modèle principal peut être défini :

  • Définitions de classe (12.2)
  • Fonctions membres (17.6.2)
  • Espaces de noms en ligne (10.3.1.2)

Le non-respect par GCC de cette règle mise à jour constitue un bug. Le problème a été identifié comme étant le bogue 85282 et est actuellement suivi par l'équipe de développement de GCC.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3