Bonjour,
pour apprendre la métaprogrammation et comprendre les expressions templates, je suis entrain de "jouer" avec une petite classe vecteur et je voudrait savoir s'il existe une solution au problème que je me suis posé :
chaque vecteur est défini par un type et une dimension :
je désire simplement effectuer, à l'aide des expressions templates, l'addition de deux vecteurs. Existe-t-il un moyen d'additionner deux vecteurs dont le type est différent, tout en respectant les règles de conversions standards (sans se préoccuper des dimensions dans un premier temps). Par exemple,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template<class type, int dim> class vecteur { protected: type val[ dim]; ... };
la somme de deux variables mettant en jeu un float et un int donne un float par la conversion implicitement du int en float. En clair, est-t-il possible que la surcharge de l'opérateur + avec deux vecteurs de types différents puisse donner en sortie un vecteur du type le plus grand ?
Exemple :
Je ne sais pas si j'ai été assez clair, et je remercie toutes les personnes qui auront eu la patiente de me lire jusqu'au bout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 vecteur<int, 4> vi; vecteur<double,4> vd; vi + vd; // conceptuellement, la somme des deux vecteurs //devrait donner un vecteur de type vecteur<double, 4>![]()
Merci beaucoup.
Partager