Je veux pouvoir définir
template <class TX>
void f(const TX &x){ ... }
template <class TY>
void f(const TY &x){ ... }
où TX doit être dérivé de BaseX et TY doit être dérivé de BaseY (comment spécifier ce genre de choses ?), et je veux pouvoir l'appeler en tant que
f(DerivedX<T>())
Il est très important que je puisse éviter de spécifier les paramètres du modèle. Est-ce possible, et si oui, comment puis-je l'implémenter ? Si ce n'est pas possible, existe-t-il un moyen de faire en sorte qu'une fonction template n'accepte que certains types, mais qu'elle soit quand même implicitement instanciée ? Je ne peux pas simplement faire en sorte que les surcharges de f acceptent la classe de base parce que j'ai besoin du type de la classe dérivée.