Je continue dans la série code ultra templaté :
Ceux qui ont fait un tour ici : http://loulou.developpez.com/tutorie...metaprog/#L3.1 devraient reconnaître. il s'agit d'un bout de code sur les expressions templates.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // Classe de base pour nos opérateurs binaires template <class T, class U> struct BinaryOpBase { BinaryOpBase(T I1, U I2) : It1(I1), It2(I2) {} inline void operator ++() {++It1; ++It2;} T It1; U It2; }; // Spécialisation pour l'addition template <typename C, class T, class U> struct BinaryOp<C, T, U, Add> : public BinaryOpBase<T, U> { BinaryOp(T I1, U I2) : BinaryOpBase<T, U>(I1, I2) {} #define MYRESULT (*It1 + *It2) inline __typeof__(MYRESULT) operator *() {return MYRESULT;} //Ligne qui pose probleme #undef MYRESULT };
Malheureusement, a la ligne noté, le compilo (gcc) me dit qu'il ne connait pas les variables It1 et It2. Pourtant, on devrait les retrouver par héritage car ils sont définis dans BinaryOpBase . Quelque chose m'échappe . . .
EDIT: en essayant avec des classes et des public partout, le résultat est le même.
Partager