specialisation explicite de patron de fonction avec des parametres de patron non-typé
Bonjour,
voici ma définition de patron générique :
Code:
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:
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:
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.