Je continue dans la série code ultra templaté :

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
};
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.

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.