Heim >Backend-Entwicklung >C++ >Warum führt eine teilweise Spezialisierung eines Vorlagenfunktionsmitglieds zur „ungültigen Verwendung eines unvollständigen Typs'?
Fehler „Ungültige Verwendung eines unvollständigen Typs“ bei teilweiser Vorlagenspezialisierung
Beim Versuch, eine teilweise Spezialisierung einer Vorlagenfunktion mit der Syntax zu erstellen :
template <typename T> void foo<int, T>::bar() { }
Sie erhalten möglicherweise die Fehlermeldung „ungültige Verwendung des unvollständigen Typs 'struct foo
Um dieses Problem zu beheben, geben Sie die vollständige Vorlagensignatur an, wenn Sie die Klasse teilweise spezialisieren:
template <typename S, typename T> struct foo { void bar(); }; template <> struct foo<int, T> { void bar() { } };
Alternativ: Sie können eine Problemumgehung verwenden, z. B. das Erstellen einer verschachtelten Vorlagenstruktur oder das Ableiten von einer anderen Vorlage, die teilweise spezialisiert ist.
Hinweis: Dies gilt nur für die teilweise Spezialisierung von Mitgliedsfunktionen. Die vollständige Spezialisierung einer Vorlagenfunktion erfordert nicht die Spezialisierung der gesamten Vorlage.
Das obige ist der detaillierte Inhalt vonWarum führt eine teilweise Spezialisierung eines Vorlagenfunktionsmitglieds zur „ungültigen Verwendung eines unvollständigen Typs'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!