restriction sur une classe template
voici le "toy" code suivant:
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 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;
} |
je souhaiterai, si c'est possible, qu ' à la compiliation l'instantiation
Code:
1 2 3
|
H<C<> > u_c;
int c = u_c.h(); |
envoie une erreur.
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