Bonjour tout le monde,
Je plonge dans l'univers de la méta-programmation récursive à l'aide de
http://loulou.developpez.com/tutoriels/cpp/metaprog/ et surtout du livre Modern C++ Design: Generic Programming and Design Patterns Applied
By Andrei Alexandrescu.
J'ai un soucis quand j'appelle une méthode template statique d'une classe template. Voici le code simplifié (sans utilité) pour bien vous montrer le problème.
Le header est :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| template<int D>
struct Int2Type
{
enum {value=D};
};
template<int Begin,int End>
struct Toto;
template<int N>
struct Toto<N,N>
{
template<class T>
static void titi()
{
};
};
template<int Begin,int End>
struct Toto
{
template<class T>
static void titi()
{
Toto<Begin+1,End>::titi<T>();
};
}; |
et le main
1 2 3 4
| int main()
{
Toto<0,3>::titi<Int2Type<0> >();
} |
J'ai cette erreur de compilation.
TypeListUseful.hpp:173: error: expected primary-expression before > token
sachant que la ligne 173 correspond à Toto<Begin+1,End>::titi<T>();
Il me manque surement un mot clé (ce n'est pas typename puisque c'est une méthode que j'appelle). Mes tentatives de trouver une réponse avec mon ami google ont été infructueuses. j'en appelle donc à la communauté.
Merci de votre aide.
Vincent
Partager