Bonjour � tous,
J'ai une classe template de ce style
Je passe et r�cup�re T par r�f�rence. Mais si la taille de T est inf�rieur � la taille d'une r�f�rence, ou d'un pointeur, mieux vaut travailler avec des valeurs (dans le cadre de bool, int, char etc...).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 template<class T> { public: void SetValue(const T& tValue); const T& GetValue(); private: T m_tValue; };
J'avais vu une astuce pour choisir automatiquement le choix de passer par valeur ou r�f�rence, mais j'ai pas retrouv� le sujet sur le forum.
J'ai une id�e, �a serait de faire
J'ai pens� �galement � ceci
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 template<class T> class RefType { typedef T& value_type; // par défaut on prend la référence }; template<> class RefType<bool> { typedef bool value_type; // Ici on prend par valeur };
Mais il me semble sur sizeof(T) est une expression dynamique, donc le compilateur n'en voudra pas.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 template<class T, bool b> class ByRef { typedef T& value_type; }; template<class T> class ByRef<T, false> // Je sais pas si ça compile mais l'idée est là { typedef T value_type; }; ByRef<T, sizeof(T)> val;
Vous pouvez m'aider ?
Merci,
A bient�t
Partager