Ich habe eine Vorlagenfunktion mit einem Argument. Ich muss diese Funktion instanziieren, ohne diese Funktion aufzurufen, was bedeutet, dass ich explizit instanziieren muss.
Ich habe diese Funktion:
template <class T> int function_name(T a) {}
Ich habe diese Funktion folgendermaßen instanziiert:
template int function_name<int>(int);
Aber ich habe folgende Fehler bekommen:
error: expected primary-expression before 'template'
error: expected `;' before 'template'
template<>
Form hat. Was er geschrieben hat, unterscheidet sich von der Spezialisierung . +1 für das Unterrichten dieser neuen Sache. Ich entferne meinen Beitrag. : DIhr Code ist korrekt.
Die Fehlermeldung bezieht sich auf eine Stelle im Code, die Sie hier nicht zitiert haben.
Aktualisieren:
Ursprünglicher Code war
und es war richtig.
Aber es wurde nicht zitiert und sah so aus :
Es wird der folgende Fehler generiert
Das unterscheidet sich deutlich von dem, was OP zitiert hat.
In dieser Variante ist die zweite Zeile in Ordnung (
<int>
kann hier weggelassen werden), aber die erste Zeile ist fehlerhaft. Der Compiler kann nicht erraten, dass diesT
ein Vorlagenparameter ist.quelle
template int function_name( T a) { }
undtemplate int function_name(int);