Bonjour,

voici ma définition de patron générique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 template <class Type, int size>
        int count( Type ( &array )[ size ], Type value )
 {
        int count_value = 0;
        for( int i = 0; i < size; ++i )
	      if( array[ i ] == value )
	          ++ count_value;
 
        return count_value;
 }
Ce patron compile bien.

Je souhaiterais réaliser aussi une spécialisation explicite de ce patron pour le
paramètre de patron Type : const char * .

Voici ce que j'écris dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 typedef const char *PCC;
 template<> int count< PCC , int size >( PCC ( &array )[  size ], PCC value )
 {
       int count_value = 0;
       for( int i = 0; i < size; ++i )
	      if( strcmp( array[ i ], value ) == 0 )
		   ++ count_value;
 
       return count_value;
 }
Malheureusement quand je compile, j'ai deux erreurs pour le patron
spécialisé.
-> syntax error : missing ',' before identifier 'size'
-> 'size' : undeclared identifier

Cela concerne la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 template<> int count< PCC , int size >( PCC ( &array )[  size ], PCC value )
Je n'arrive donc pas à écrire convenablement une spécialisation explicite de
patron de fonction contenant des paramètres de patron non-typé :
ici 'int size' .

Je n'ai pas trouvé de réponse sur internet . Quelqu'un sait-il comment faire ?

Merci d'avance.