Bonjour
Je ne vois pas du tout pourquoi le code suivant ne peut pas fonctionner:
Autant je comprendrais pourquoi ce code ne peut pas fonctionner:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 template< class T > T check( T ); template< class S > void watch( S (*)(S) ); watch( check ); //error
car dans ce cas, on a une fonction qui renvoie un int et qui prend un argument de type S, alors que check renvoie et prend un argument de même type (et encore, le compilateur pourrait automatiquement transformer S en int).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 template< class T > T check( T ); template< class S > void watch( int (*)(S) ); watch( check ); //error
Le compilateur renvoie comme erreur:
no instance of function template matches the argument list.
Mais je ne vois pas du tout pourquoi.
Merci
Partager