Explizite Spezialisierung einer Mitgliedsfunktion für eine Klassenvorlage
Problemstellung:
Wann Beim Definieren einer expliziten Spezialisierung einer Mitgliedsfunktion für eine Klassenvorlage muss man auch die umgebende Klassenvorlage explizit spezialisieren, um den Compiler zu vermeiden Fehler.
Codebeispiel:
Beachten Sie den folgenden Codeausschnitt:
template <class C> class X { public: template <class T> void get_as(); }; template <class C> void X<C>::get_as<double>() { } int main() { X<int> x; x.get_as(); }
Dieser Code löst Compilerfehler aus, da die umgebende Klassenvorlage X vorhanden ist nicht explizit spezialisiert.
Lösung:
Zu Um dieses Problem zu lösen, müssen wir die umgebende Klassenvorlage explizit spezialisieren, wie unten gezeigt:
template <> template <> void X<int>::get_as<double>() { }
Diese spezialisierte Memberfunktion gilt nur für X
Das obige ist der detaillierte Inhalt vonWie kann man eine Mitgliedsfunktion einer Klassenvorlage explizit spezialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!