surcharge de modèle de fonction

Quelqu'un peut-il résumer l'idée de la fonction de modèle de la surcharge? Ce qui importe, modèle de paramètre ou les paramètres de la fonction? Que penser de la valeur de retour?

Par exemple, étant donné un modèle de fonction

template<typename X, typename Y> void func(X x, Y y) {}

quelle est la fonction surchargée modèle?

1) template<typename X> void func(X x, int y) {}
2) template<typename X, typename Y> X func(X x, Y y) {}
3) template<class X, class Y, class Z> void func(X x, Y y, Z z) {}

source d'informationauteur skydoor