J'ai une fonction de modèle avec un argument. Je dois instancier cette fonction sans appeler cette fonction signifie explicitement que je dois instancier.
J'ai cette fonction:
template <class T> int function_name(T a) {}
J'ai instancié cette fonction comme ceci:
template int function_name<int>(int);
Mais j'ai eu les erreurs suivantes:
error: expected primary-expression before 'template'
error: expected `;' before 'template'
template<>
forme. Ce qu'il a écrit est différent de la spécialisation . +1 pour m'avoir appris cette nouvelle chose. Je supprime mon message. : DVotre code est correct.
Le message d'erreur concerne un endroit du code que vous n'avez pas cité ici.
Mettre à jour:
Le code d'origine était
et c'était correct.
Mais il n'a pas été cité et ressemblait donc à ceci:
Il génère l'erreur suivante
ce qui est clairement différent de ce qu'OP a cité.
Dans cette variante, la deuxième ligne est correcte (
<int>
peut être omise ici), mais la première ligne est défectueuse. Le compilateur ne peut pas deviner qu'ilT
s'agit d'un paramètre de modèle.la source
template int function_name( T a) { }
ettemplate int function_name(int);