On Tue, 25 Oct 2005 13:32:35 +0200, JBB : Euh... J'ai dû rater quelque chose, car je ne vois pas bien l'utilité de rajouter un truc dans le langage.
template <class T, class identifiant_unique> class PseudoTypedef { public: PseudoTypedef (T const& t= T()); // Ici, les fonctions dont tu as besoin -- ==, <, etc. };
class BIDON_taille_en_metres {}; typedef PseudoTypedef <int, BIDON_taille_en_metres> taille_en_metres;
class BIDON_age {}; typedef PseudoTypedef <int, BIDON_age> age;
int main() { taille_en_metres longueur_du_bateau = 100; age age_du_capitaine = 0; age_du_capitaine = longueur_du_bateau; //error cast impossible }
Bon, merci pour l'idée générale. On doit arriver à faire sans trop de mal des entiers quasiment compatibles avec int et pas compatibles entre eux. En tout cas, je progresse.
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangereux que prendre un boulevard dans le sens légal. À qui la faute ?
Le 25-10-2005, Fabien LE LEZ <gramster@gramster.com> a écrit :
On Tue, 25 Oct 2005 13:32:35 +0200, JBB <merci@pasdespam.fr>:
Euh... J'ai dû rater quelque chose, car je ne vois pas bien l'utilité
de rajouter un truc dans le langage.
template <class T, class identifiant_unique>
class PseudoTypedef
{
public:
PseudoTypedef (T const& t= T());
// Ici, les fonctions dont tu as besoin -- ==, <, etc.
};
class BIDON_taille_en_metres {};
typedef PseudoTypedef <int, BIDON_taille_en_metres> taille_en_metres;
class BIDON_age {};
typedef PseudoTypedef <int, BIDON_age> age;
int main()
{
taille_en_metres longueur_du_bateau = 100;
age age_du_capitaine = 0;
age_du_capitaine = longueur_du_bateau; //error cast impossible
}
Bon, merci pour l'idée générale.
On doit arriver à faire sans trop de mal des entiers
quasiment compatibles avec int et pas compatibles entre eux.
En tout cas, je progresse.
Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangereux
que prendre un boulevard dans le sens légal. À qui la faute ?
On Tue, 25 Oct 2005 13:32:35 +0200, JBB : Euh... J'ai dû rater quelque chose, car je ne vois pas bien l'utilité de rajouter un truc dans le langage.
template <class T, class identifiant_unique> class PseudoTypedef { public: PseudoTypedef (T const& t= T()); // Ici, les fonctions dont tu as besoin -- ==, <, etc. };
class BIDON_taille_en_metres {}; typedef PseudoTypedef <int, BIDON_taille_en_metres> taille_en_metres;
class BIDON_age {}; typedef PseudoTypedef <int, BIDON_age> age;
int main() { taille_en_metres longueur_du_bateau = 100; age age_du_capitaine = 0; age_du_capitaine = longueur_du_bateau; //error cast impossible }
Bon, merci pour l'idée générale. On doit arriver à faire sans trop de mal des entiers quasiment compatibles avec int et pas compatibles entre eux. En tout cas, je progresse.
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangereux que prendre un boulevard dans le sens légal. À qui la faute ?
Vincent Lascaux
Ce que j'arrive à faire pour le moment, c'est du sous-typage.
Est ce que ce boulot a été fait dans une librairie existante ? Je vois qu'il y a un fichier qui s'appelle strong_typedef.hpp dans boost, mais il est pas documenté...
-- Vincent
Ce que j'arrive à faire pour le moment, c'est
du sous-typage.
Est ce que ce boulot a été fait dans une librairie existante ? Je vois qu'il
y a un fichier qui s'appelle strong_typedef.hpp dans boost, mais il est pas
documenté...
Est ce que ce boulot a été fait dans une librairie existante ? Je vois qu'il y a un fichier qui s'appelle strong_typedef.hpp dans boost, mais il est pas documenté...