voici le "toy" code suivant:
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;
}
je souhaiterai, si c'est possible, qu ' à la compiliation l'instantiation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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