Supposons que j'ai fileA.h
qui déclare une classe classA
avec la fonction de modèle SomeFunc<T>()
. Cette fonction est implémentée directement dans le fichier d'en-tête (comme d'habitude pour les fonctions de template). Maintenant, j'ajoute une implémentation spécialisée de SomeFunc()
(comme pour SomeFunc<int>()
) dans fileA.C
(c'est-à-dire pas dans le fichier d'en-tête).Visibilité de la spécialisation de modèle de la fonction C++
Si j'appelle maintenant SomeFunc<int>()
d'un autre code (peut-être aussi d'une autre bibliothèque), appellerait-il la version générique, ou la spécialisation?
J'ai ce problème en ce moment, où la classe et la fonction vivent dans une bibliothèque qui est utilisée par deux applications. Et une application utilise correctement la spécialisation, tandis qu'une autre application utilise le formulaire générique (ce qui provoque des problèmes d'exécution plus tard). Pourquoi la différence? Cela peut-il être lié aux options de l'éditeur de liens, etc.? C'est sur Linux, avec g ++ 4.1.2.
Zut, la liaison automatique du nom d'utilisateur ne fonctionne pas. –