Возможно, это легко решить, но трудно найти решение этой проблемы:
Можно ли (частично) специализироваться для целого набора типов?
В примере «Foo» должен быть частично специализирован для (T, int) и (T, double) только с одним определением шаблона.
Что я могу сделать, так это определить специализацию для (T, int). Увидеть ниже. Но это должно быть для (T, int) и (T, double) только с одним определением функции (без удвоения кода).
template <typename T,typename T2>
struct Foo
{
static inline void apply(T a, T2 b)
{
cout << "we are in the generic template definition" << endl;
}
};
// partial (T,*)
template <typename T>
struct Foo<T, int > // here something needed like T2=(int, double)
{
static inline void apply(T a, T2 b)
{
cout << "we are in the partial specialisation for (T,int)" << endl;
}
};
Есть идеи, как частично специализировать это для (T, int) и (T, double) с одним определением шаблона?