Hej,
mam dany kod:
template<class ...T>
class OverloadedMethod;
template<class T>
class OverloadedMethod<T>
{
public:
void f(T value)
{
cout << "OverloadedMethod(first): " << value << " : " << typeid(value).name() << endl;
}
};
template<class T, class ...Ts>
class OverloadedMethod<T, Ts...> :
public OverloadedMethod<Ts...>
{
public:
void f(T value)
{
cout << "OverloadedMethod(second): " << value << " : " << typeid(value).name() << endl;
}
};
Problem w tym, że dla większej liczby argumentów szablonu tylk pierwsza wariant funkcji f jest widoczny...
np.
OverloadedMethod<int, double> overloadedMethod;
overloadedMethod.f(double(1.0)); // będzie niejawne rzutowanie do inta... zamiast wywołać metodę (first).
overloadedMethod.f(int(1));
Pomysł?
#edit
Mam 1 rozwiązanie - dopisanie
using OverloadedMethod<Ts...>::f;
do klasy (second).