
Envoyé par
gbdivers
Pour la classe de traits, c'est parce que j'aime bien donner le prototype de la classe de traits, pour que celui qui veut spécialiser puisse directement le faire sans aller chercher le code d'une autre spécialisation...
C'est louable, mais le problème, c'est que si un utilisateur décide d'écrire
Point3D<unsigned int> monPoint; // ou n'importe quel autre type pour lequel il n'y a pas de spécialisation
il n'y a strictement rien qui lui fasse remarquer que la spécialisation n'existe pas, surtout que tu fournis un implémentation pour les fonctions 
Si tu ne donne pas de corps aux fonctions de la version non spécialisée, tu retarde la découverte du fait qu'il n'existe pas de spécialisation pour le type en question au moment de... l'édition de liens (qui peut survenir très tard, en fonction du nombre de fichiers à compiler)
Par contre, si tu te contente carrément d'une déclaration anticipée de ta classe (qui suffit amplement
), l'erreur arrivera dés le premier fichier qui tentera de créer une instance de ton Point3D, et donc, cela occasionnera du gain de temps pour tout le monde 
mais je peux mettre le code en commentaire
A vrai dire, c'est carrément tout le corps de la classe (accolades ouvrantes et fermantes comprises) que je mettrais en commentaire 
Merci
de rien
Partager