„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum kann GCC keine explizite Spezialisierung im Nicht-Namespace-Bereich kompilieren?

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

Veröffentlicht am 21.12.2024
Durchsuche:814

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

Explizite Spezialisierung im Nicht-Namespace-Bereich

Der angegebene Code kann in GCC trotz erfolgreicher Kompilierung in Clang nicht 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 zu ermöglichen.

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)

GCCs Versäumnis, diese aktualisierte Regel einzuhalten stellt einen Fehler dar. Das Problem wurde als Bug 85282 identifiziert und wird derzeit vom GCC-Entwicklungsteam verfolgt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3