Especialización explícita en un ámbito que no es de espacio de nombres
El código proporcionado no se compila en GCC a pesar de compilarse correctamente en Clang. Según el estándar C ([temp.expl.spec]), las especializaciones explícitas se pueden declarar en cualquier ámbito donde se pueda definir la plantilla principal correspondiente.
Este comportamiento parece ser un error en GCC. Según CWG 727, la regla en [temp.expl.spec] con respecto a la especialización explícita se ha modificado para permitir dichas declaraciones en cualquier ámbito relevante.
Alcance de la especialización explícita
El estándar original establecía que la especialización explícita debería declararse en un espacio de nombres que incluya la plantilla especializada. Sin embargo, el estándar actual permite una especialización explícita en cualquier ámbito donde se pueda definir la plantilla principal:
El hecho de que GCC no cumpla con esta regla actualizada constituye un error. El problema se identificó como error 85282 y actualmente el equipo de desarrollo de GCC lo rastrea.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3