"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué GCC no logra compilar la especialización explícita en un ámbito que no es de espacio de nombres?

¿Por qué GCC no logra compilar la especialización explícita en un ámbito que no es de espacio de nombres?

Publicado el 2024-12-21
Navegar:991

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

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:

  • Definiciones de clase (12.2)
  • Funciones de miembros (17.6.2)
  • Espacios de nombres en línea (10.3.1.2)

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.

Último tutorial Más>

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