Spécialisation partielle de template template
Hello,
J'essaye de définir les bornes d'un intervalle sous forme de type.
Un intervalle peut être totalement ouvert (pas de limites), ou borné d'un seul côté, ou des deux.
Ceci est défini par des paramètres template, et selon ce qu'on y met, ma classe comporte ou pas des membres indiquant pour indiquer les bornes. D'où des spécialisations.
Voici sur quoi je suis parti :
Code:
1 2 3 4 5 6 7 8 9 10 11
| template <bool Value, bool Strict>
class Bound
{
enum { value = Value }; // valeur de la borne
enum { strict = Strict }; // vrai si inégalité stricte
};
template <typename T,
template<bool InfV, bool InfS> class Inf,
template<bool SupV, bool SupS> class Max>
class Bounded; |
A l'utilisation, j'aurais donc quelque chose du genre :
Code:
1 2 3
| Bounded<double, Bound<false, false>, Bound<true, false>> monParamètre;
monParamètre.maxBound = 500.0;
monParamètre.setValue(215.0); |
J'aurais bien voulu passer la valeur des bornes à la définition des types, mais il n'est pas possible de passer un double comme paramètre template...
Enfin bref, comment spécialiser mon template de classe pour InfV = true, par exemple ?
Pour info, je cherche à transcrire en C++ un champ de base de données...
Merci !