Je dois utiliser une bibliothèque externe, mais j'obtiens une "erreur de définition multiple" de la fonction de gabarit suivante et de sa spécialisation explicite, si elle est appelée avec une chaîne std :: string.Fonction normale ne pas écraser le modèle
template <typename T>
void foo(T& value);
template <>
void foo(std::string& value);
même si je change la 2ème fonction
void foo(std::string& value);
le problème est le même.
Selon [1], la version sans modèle (la "fonction ancienne") devrait être préférée à la version du modèle.
Est-ce que quelqu'un a une idée, où le problème pourrait être?
[1] http://www.gotw.ca/publications/mill17.htm
L'erreur est lors de la compilation ou lors de la liaison? De plus, peut-être que le fichier d'en-tête n'est pas bien protégé par les macros à inclure une seule fois. –
Avez-vous uniquement les définitions de fonctions dans votre fichier d'en-tête? Vous avez besoin du corps entier. Voir ici: http://www.parashift.com/c++-faq/templates.html#faq-35.12 – mkb
Merci les gars, la réponse de GMan a fait l'affaire. – randooom