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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !