Можно ли обобщить идею перегрузки шаблона функции? Что важно, параметр шаблона или параметр функции? Как насчет возвращаемого значения?
Например, с учетом шаблона функции
template<typename X, typename Y> void func(X x, Y y) {};
какой шаблон перегруженной функции?
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) {};