j'aimerai faire un truc comme ça:
Code :
- template <size_t a=10> class A1 {};
- template <size_t a=10> class A2 {};
- template <class G, typename T> class B1{};
- template <class G, typename T> class B2{};
- template <typename T, class A=A1, class B=B1, class P=B<A,T> > class Z : public P {};
|
et donc pouvoir faire des instanciations stÿle:
Z<int> a;
Z<int,A2> b;
Z<int,A2,B2> c;
le prob c'est qu'il me sors ça:
error C3203: 'A1' : modèle de classe non valide comme argument de modèle pour le paramètre de modèle 'A', type réel attendu
error C3203: 'B1' : modèle de classe non valide comme argument de modèle pour le paramètre de modèle 'B', type réel attendu
error C2947: '>' attendu pour terminer template-argument-list, '<' trouvé
error C2516: 'P' : classe de base non conforme
error C2143: erreur de syntaxe : absence de ';' avant '>'
error C2143: erreur de syntaxe : absence de ';' avant '>'
qu'elle est l'achtuche qu'il me manque ? (y'a t'il quelqu'un dans la salle qui ayes une achtuche assez longue ?)
pour l'instant je fais ça pour que ça marche:
Code :
- template <typename T, class P = B1<A1<>,T> >class Z : public P {};
|
mais du coup c'est moins zoli à l'instanciation....
Message édité par bjone le 22-08-2005 à 16:40:54