Quelqu'un peut-il dire s'il est légal ou non?Spécialisation partielle C++ (Pointeurs de fonction)
template < typename s , s & (*fn) (s *) >
class c {};
// spécialisation partielle
template < typename s , s & (*fn) (s *) >
class c < s*, s* & (*fn)(s**) {};
g++ (4.2.4) error: a function call cannot appear in a constant-expression error: template argument 2 is invalid
Bien qu'il travaille pour la spécialisation explicite
int & func (int *) { return 0; }
template <> class c < int , func> class c {};
Il manque un ">" BTW à votre deuxième extrait de code. –