Paramètre template : différencier deux types similaires
Bonjour à tous,
J'ai un tableau où pour positionner une valeur, on lui donne la valeur sous forme de void* et on lui indique son type par un identifiant.
Les types de date prennent des double en fait, et il existe également le type double.
J'ai fait ceci :
Code:
1 2 3 4 5 6 7 8 9
|
enum MesTypes
{
E_TYPE_INT = 1
E_TYPE_DOUBLE = 2
E_TYPE_FLOAT = 3
E_TYPE_DATE = 4
E_TYPE_INCONNU
}; |
Pour retrouver le type du tableau en fonction du type C++ je fais ceci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
template<class T>
struct TO_MY_TYPE
{
enum { Value = E_TYPE_INCONNU; }
};
template<>
struct TO_MY_TYPE<int>
{
enum { Value = E_TYPE_INT; }
};
template<>
struct TO_MY_TYPE<float>
{
enum { Value = E_TYPE_FLOAT; }
}; |
C'est pour la suite que j'ai un soucis, en effet pour les types double, ça peut être un double comme une date. J'ai essayé de faire un alias avec un typedef pour les distinguer :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
typedef double TDate;
template<>
struct TO_MY_TYPE<double>
{
enum { Value = E_TYPE_DOUBLE; }
};
template<>
struct TO_MY_TYPE<TDate>
{
enum { Value = E_TYPE_DATE; }
}; |
Je pensais que le compilateur aller faire une distinction entre TDate et double mais en fait non, il me lance une erreur indiquant que la spécialisation TO_MY_TYPE<double> existe déjà.
Il y a un moyen propre pour distinguer les deux types ?
Merci,
A bientôt