Heim > Backend-Entwicklung > C++ > Warum kann GCC keine explizite Spezialisierung im Nicht-Namespace-Bereich kompilieren?

Warum kann GCC keine explizite Spezialisierung im Nicht-Namespace-Bereich kompilieren?

Susan Sarandon
Freigeben: 2024-11-16 05:40:03
Original
223 Leute haben es durchsucht

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

Explizite Spezialisierung im Nicht-Namespace-Bereich

Der angegebene Code kann trotz erfolgreicher Kompilierung in Clang nicht in GCC kompiliert werden. Gemäß dem C-Standard ([temp.expl.spec]) können explizite Spezialisierungen in jedem Bereich deklariert werden, in dem die entsprechende primäre Vorlage definiert werden könnte.

Dieses Verhalten scheint ein Fehler in GCC zu sein. Gemäß CWG 727 wurde die Regel in [temp.expl.spec] bezüglich der expliziten Spezialisierung geändert, um solche Deklarationen in jedem relevanten Bereich zuzulassen.

Bereich der expliziten Spezialisierung

Der ursprüngliche Standard besagte, dass die explizite Spezialisierung in einem Namespace deklariert werden sollte, der die spezialisierte Vorlage umschließt. Der aktuelle Standard erlaubt jedoch eine explizite Spezialisierung in jedem Bereich, in dem die primäre Vorlage definiert werden kann:

  • Klassendefinitionen (12.2)
  • Mitgliedsfunktionen (17.6.2)
  • Inline-Namespaces (10.3.1.2)

Die Nichteinhaltung dieser aktualisierten Regel durch GCC stellt einen Fehler dar. Das Problem wurde als Bug 85282 identifiziert und wird derzeit vom GCC-Entwicklungsteam verfolgt.

Das obige ist der detaillierte Inhalt vonWarum kann GCC keine explizite Spezialisierung im Nicht-Namespace-Bereich kompilieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage