"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o GCC falha ao compilar especialização explícita em escopo não-namespace?

Por que o GCC falha ao compilar especialização explícita em escopo não-namespace?

Publicado em 2024-12-21
Navegar:554

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

Especialização explícita em escopo não-namespace

O código fornecido falha ao compilar no GCC, apesar de ter sido compilado com sucesso no Clang. De acordo com o padrão C ([temp.expl.spec]), especializações explícitas podem ser declaradas em qualquer escopo onde o modelo primário correspondente possa ser definido.

Este comportamento parece ser um bug no GCC. De acordo com o CWG 727, a regra em [temp.expl.spec] relativa à especialização explícita foi modificada para permitir tais declarações em qualquer escopo relevante.

Escopo da especialização explícita

O padrão original afirmava que a especialização explícita deveria ser declarada em um namespace envolvendo o modelo especializado. No entanto, o padrão atual permite especialização explícita em qualquer escopo onde o modelo primário possa ser definido:

  • Definições de classe (12.2)
  • Funções de membro (17.6.2)
  • Namespaces inline (10.3.1.2)

A falha do GCC em aderir a esta regra atualizada constitui um bug. O problema foi identificado como Bug 85282 e atualmente é monitorado pela equipe de desenvolvimento do GCC.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3