5510Fermer5512
BookeldOrLe 11/03/2008 à 11:30
very (./5501) :
Genre au lieu de faire

template<class T> struct Complexe { T re; T img; };

on fait
type 'a complexe = { re:'a; img:'a }


En fait non, ça c'est un type complètement générique, (on est pas obligé d'y mettre des objets (à moins que class T ne signifie pas qu'on ne peut y mettre que des objets)).
Pour forcer à mettre des objets en caml, on fait ça :
type 'a complexe = { re: (< .. > as 'a); img:'a } ;;

ou
type 'a complexe = { re: 'a; img:'a } constraint 'a = < .. >;;


(en gros, on force 'a à être le type d'un objet (ici, on ne force aucun prototype, donc n'exige aucune méthode, et on permet tout d'où le < .. >)).