Bonjour � tous,

J'ai une classe template de ce style
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;
};
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...).

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
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
};
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
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;
Mais il me semble sur sizeof(T) est une expression dynamique, donc le compilateur n'en voudra pas.

Vous pouvez m'aider ?

Merci,

A bient�t