Appeler une méthode template d'un paramètre template
	
	
		Bonjour,
Les explications sont plus bas, le code qui pose problème est là
	Code:
	
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 26 27 28 29 30 31 32 33 34 35 36
   | #include <iostream>
 
enum enum_type
  {
    val_zero = 0,
    val_one,
    val_two,
    val_twenty_four = 24
  };
 
/*------------------------------------------------------------*/
class workaround
{
public:
  template<enum_type Val>
  unsigned int get() { return Val; }
}; // class workaround
 
/*------------------------------------------------------------*/
template<class Method>
class A
{
public:
  void f()
  {
    Method m;
    std::cout << m.get<val_zero>() << std::endl; /* ligne 27 */
  }
}; // class A
 
int main()
{
  A<workaround> a;
 
  a.f();
} | 
 J'essaie d'appeler, dans la classe A, une méthode de son paramètre template. Cette méthode a aussi un paramètre template. Alors je compile tout ça, et là mon compilateur m'insulte (g++ 4.0.3) :
	Citation:
	
		
		
			test_virt_temp.cpp: In member function «void A<Method>::f()»:
test_virt_temp.cpp:27: erreur: expected primary-expression before «)» token
test_virt_temp.cpp: In member function «void A<Method>::f() [with Method = workaround]»:
test_virt_temp.cpp:64:   instantiated from here
test_virt_temp.cpp:27: erreur: no match for «operator<<» in «std::cout << m.workaround::get»
			
		
	
 J'imagine que j'ai un problème de syntaxe, mais je n'arrive pas à mettre la main dessus. Est-ce plus clair pour vous ?
Merci