Здравствуйте, wobist, Вы писали:
W>Выделяется два или более любых типа, Type1...TypeN, для которых реализуется такая шаблонная функция:
W>...
W>так, чтобы полноценно работал механизм выбора перегруженных функций через SFINAE, как реализовать набор типов?
Тогда нужно сделать уже перегруженные функции частью шаблона, а внутри дергать имплементацию.
template<class T1, class T2>
void f_impl_tmpl(T1 &t1, T2 &t2);
void f_impl(OutListType1 &t1, OutListType2 &t2);
void f_impl(OutListType3 &t1, OutListType4 &t2);
template<class T1, class T2> void f(T1 &t1, T2 &t2)
{
if(<T1 из набора Type1...TypeN> || <T2 из набора Type1...TypeN>)
{
return f_impl_tmpl(t1,t2);
}
return f_impl(t1,t2);
}
Пойдёт?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]