Heim >Backend-Entwicklung >C++ >Warum erfordert das Aufrufen einer Member-Funktionsvorlage aus einer Vorlagenfunktion das Schlüsselwort „template'?
Member-Funktion des Aufrufs einer Template-Klasse aus einer Template-Funktion
Im bereitgestellten Code-Snippet führt der Aufruf einer Member-Funktionsvorlage aus einer anderen Vorlage zu ein Kompilierungsfehler. Konkret versucht der Code, A
Um dieses Problem zu beheben, muss das Schlüsselwort template vor dem Aufruf der Memberfunktion explizit angegeben werden. Dies liegt daran, dass gemäß dem C '03-Standard 14.2/4, wenn der Name einer Spezialisierung einer Mitgliedsvorlage nach einem Postfix-Ausdruck oder einer qualifizierten ID erscheint, die von einem Vorlagenparameter abhängt, dem Namen der Mitgliedsvorlage das Schlüsselwort template vorangestellt werden muss .
Daher ist der folgende Code korrekt:
<code class="cpp">template<class T> void g() { A<T> a; a.template f<3>(); // Explicitly specify 'template' keyword }</code>
Durch Hinzufügen des Schlüsselworts template kann der Compiler korrekt identifizieren, dass f eine Mitgliedsvorlage der A-Klassenvorlage ist, und das kann er auch Rufen Sie erfolgreich A
Das obige ist der detaillierte Inhalt vonWarum erfordert das Aufrufen einer Member-Funktionsvorlage aus einer Vorlagenfunktion das Schlüsselwort „template'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!