void, passé par template, comme type d'argument d'une fonction
Bonjour à tous,
Je ne m'explique pas ce problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
template<class T1, class T2>
class C
{
public:
typedef T1 (*Fptr)(void); //La ligne importante
Fptr fptr;
};
int main()
{
C<void,void> c;
return 0;
} |
(Je sais que je n'utilise pas T2 pour l'instant).
Ce code fonctionne parfaitement. En revanche:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
template<class T1, class T2>
class C
{
public:
//T2 à la place de void pour le type de l'argument
typedef T1 (*Fptr)(T2); //invalid parameter type `void'
Fptr fptr; //invalid parameter type `void'
};
int main()
{
C<void,void> c;
return 0;
} |
Ce code ne fonctionne pas, j'ai mis les erreurs en face des lignes que le compilateur incrimine.
C'est peut-être tout bête, mais j'aimerais savoir la subtilité qui empeche la 2ème version de fonctionner -_-'
Merci d'avance de votre aide...