Bonjour, voici le Toy code
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 struct Y{ static int F() { return 10;} }; template < class T > struct R{ template <int m> int F(void); template<> int F<2>(void){return 6+T::F(); } }; template < class T > template <int m> int R<T>::F(void){ return m + T::F(); } int _tmain(int argc, _TCHAR* argv[]){ R<Y> r; b= r.F<2>(); b= r.F<3>(); return 0; }
Je suis parvenu à écrire le corps générique de F hors de la struct R.
Je ne parviens à faire de même avec la specialisation m=2.
la solution suivante est un echec
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 struct Y{ static int F() { return 10;} }; template < class T > struct R{ template <int m> int F(void); template<> int F<2>(void); }; template < class T > template <int m> int R<T>::F(void){ return m + T::F(); } template<> template < class T > int R<T>::F<2>(void){ return 20 + T::F(); }
J 'ai du mal à saisir pourquoi, si vous avez une suggestion
Partager