Heim > Backend-Entwicklung > C++ > Hauptteil

Warum kann GCC keine expliziten Spezialisierungen von Member-Funktionsvorlagen innerhalb einer Klasse kompilieren?

DDD
Freigeben: 2024-11-24 12:52:43
Original
372 Leute haben es durchsucht

Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?

GCC-Fehler: Explizite Spezialisierung im Nicht-Namespace-Bereich

Frage:

Warum? Der folgende Code kann in GCC nicht kompiliert werden, wenn eine Member-Funktionsvorlage explizit in a spezialisiert wird Klasse?

template<typename T>
struct Widget
{
    template<typename U>
    void foo(U)
    {
    }

    template<>
    void foo(int*)
    {
    }
};
Nach dem Login kopieren

Antwort:

Gemäß dem C-Standard ([temp.expl.spec], Absatz 2) können in jedem explizite Spezialisierungen deklariert werden Bereich, in dem die entsprechende primäre Vorlage definiert werden kann. Daher sollte der Code auch in GCC kompiliert werden.

GCC-Fehler und Berichte:

Dieser Fehler beim Kompilieren in GCC ist wahrscheinlich ein Fehler. Um es zu melden, befolgen Sie diese Schritte:

  1. Erstellen Sie einen Fehlerbericht unter https://gcc.gnus.org/bugzilla/index.cgi.
  2. Weisen Sie die Komponente „C“ zu und die entsprechende Version von GCC (z. B. „8“).
  3. Geben Sie eine Beschreibung des Problems an, einschließlich der Fehlermeldung, die Sie erhalten haben, und der erwarteten Fehlermeldung Verhalten.
  4. Fügen Sie dem Bericht ein minimal reproduzierbares Code-Snippet (z. B. den von Ihnen bereitgestellten Code) bei.

Standardreferenz:

Im C-Standardabschnitt [temp.expl.spec] Absatz 2 heißt es:

Eine explizite Spezialisierung kann deklariert werden in jedem Bereich, in dem die entsprechende primäre Vorlage definiert werden kann.

Das obige ist der detaillierte Inhalt vonWarum kann GCC keine expliziten Spezialisierungen von Member-Funktionsvorlagen innerhalb einer Klasse 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage