C'est parce que mon but était de te fournir un code minimum compilable pour l'exemple, il te revient, à toi seul, de choisir les instanciations explicites qui te conviennent effectivement
J'aurais tout aussi bien pu en faire une pour les quinze types primitifs qui existent ou décider de n'en faire qu'une pour deux (ou les trois ) types réels.
Et, pour le reste, de quels autres types veux tu parler
Car, ta classe AABBB représente une notion bien particulière: la notion de collision entre deux éléments. Cette notion n'a de sens -- soyons simple -- que si les données manipulées sont des valeur numérique (entières ou réelle). Et encore, parce que les types qui t'intéressent réellement, ce sont ceux que le reste de ta bibliothèque utilise "au jour le jour".
Si, parmi les quinze type primitifs qui correspondent à cette définition de "valeur numérique (entière ou réelle)" que nous propose le langage, tu décide de ne supporter que les
float et les double dans le reste de ton projet, tu t'en fous royalement si ta notion de collision ne supporte pas les int ou les unsigned long long
(*)
Il n'y a -- par exemple -- aucun sens à tester la collision entre deux tableaux de ... chaînes de caractères, nous sommes bien d'accord
Mais, peut-être, fais tu référence à des types de données spécifiques, comme au
GLuint proposé par OpenGL
Sur ce point, je peux te rassurer, car ce ne sont que des alias sur l'un des types primitifs "classiques" (et encore, ce sont des symboles préprocesseur, dans le cas de OpenGL). Or, ce n'est pas le nom de l'alias de type qui est pris en compte, mais bien le type réel auquel l'alias correspond
(*) Depuis maintenant plus de quinze ans que je m'intéresse au C++, si j'exclus la bibliothèque standard, qui est effectivement adaptée à n'importe quel type, y compris les types définis par l'utilisateur, je n'ai pas croisé un seul projet pour lequel il était effectivement indispensable de pouvoir prendre n'importe quel type de données en compte.
Il y a
toujours des prérequis que le type utilisé comme paramètre template doit respecter pour pouvoir être utilisé dans le cadre du besoin que l'on décide de remplir, et, parmi tous les types qui satisfont à ces prérequis, il est particulièrement rare que l'on décide d'en accepter l'ensemble
Partager