Bonjour
Je commence à apprendre la méta-programmation grâce à un tutoriel de Développez.com et je suis face à un grand questionnement...
J'ai fait une fonction avec des paramètres template de type int et elle fonctionne parfaitement, mais si je remplace ce type par le type float, double, une structure ou une classe le compilateur me dis que ces types sont interdits comme paramètre.
Voici le squelette de ma fonction:
Apparemment, le compilateur n'accepte que les int, char, bool, références et pointeurs...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<double v> struct Fonc { static double F() { return v;} };
Je peux donc créer mes différentes méta-fonctions avec des référence mais ceci pourrait me causer des désagréments dans certaines situations.
Je me demande pourquoi le compilateur est si capricieux avec les paramètres template, pourquoi n'accepte-t-il pas tous les types comme pour les paramètres des fonctions?
J'aimerais avoir vos avis sur la question...
Partager