Spécialisation de template parametre avec Enum
	
	
		Avec Visual Express
Pourquoi le code suivant code suivant compile:
	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
   | class A
{
public:
   enum E_Enumeration{
      E_1,
      E_2,
      E_3
   };
   template<enum E_Enumeration> struct stTemplate{};
 
   template<> struct stTemplate<E_1>{typedef int Type;};
   template<> struct stTemplate<E_2>{typedef float Type;};
   template<> struct stTemplate<E_3>{typedef char Type;};
 
   template<enum E_Enumeration P_E>
   typename stTemplate<P_E>::Type Valeur()
   {
      return stTemplate<P_E>::Type();
   }
};
int main()
{
   A a;
   a.Valeur<A::E_1>();
   a.Valeur<A::E_2>();
   a.Valeur<A::E_3>();
   return 0;
} | 
 Mais le code suivant ne compile pas:
	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
   | enum E_Enumeration{
   E_1,
   E_2,
   E_3
};
template<enum E_Enumeration> struct stTemplate{};
 
template<> struct stTemplate<E_1>{typedef int Type;};
template<> struct stTemplate<E_2>{typedef float Type;};
template<> struct stTemplate<E_3>{typedef char Type;};
 
class A
{
public:
 
   template<enum E_Enumeration P_E>
   typename stTemplate<P_E>::Type Valeur()
   {
      return stTemplate<P_E>::Type();
   }
};
int main()
{
   A a;
   a.Valeur<E_1>();
   a.Valeur<E_2>();
   a.Valeur<E_3>();
   return 0;
} | 
 J'ai toute une palanqué de 
	Citation:
	
		
		
			error C2440: 'specialization' : cannot convert from 'E_Enumeration' to 'E_Enumeration'
			
		
	
  pour les lignes 
	Code:
	
template<> struct stTemplate<E_1>{typedef int Type;};
 Nota: le code compile avec gcc (à un chouïa près).