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 :
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.
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