voici le "toy" code suivant:
je souhaiterai, si c'est possible, qu ' à la compiliation l'instantiation
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
30
31
32
33
34
35
36
37
38
39
40 template< int n=2> struct C{ int F () {return -n;} }; template< int n=2> struct A{ int F () {return n;} }; template< int n=2> struct B:public A<n>{ int F () {return n+1;} }; template< class T> struct H{ int h () { T a; return a.F();} }; int main() { H<A<> > u_a; H<B<> > u_b; H<C<> > u_c; int a = u_a.h(); int b = u_b.h(); int c = u_c.h(); return 0; }
envoie une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 H<C<> > u_c; int c = u_c.h();
Le but est de restreindre la portée de l 'argument template de H pour seule les classes dérivées de A soient permises et cela sans toucher aux classes A,B ou C.
Merci encore
Mathieu
Partager