Avec Visual Express
Pourquoi le code suivant code suivant compile:
Mais le code suivant ne compile pas:
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
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; }
J'ai toute une palanqué de
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
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; }pour les ligneserror C2440: 'specialization' : cannot convert from 'E_Enumeration' to 'E_Enumeration'Nota: le code compile avec gcc (à un chouïa près).
Code : Sélectionner tout - Visualiser dans une fenêtre à part template<> struct stTemplate<E_1>{typedef int Type;};
Partager