Есть некий класс A, у него есть метод call который должен вызывать у класса B некоторый метод foo, bar или еще какой то:
class A{
template<typename C, ... func ... > void call(C& c, ...){
// длинная свитч-портянка в ней определеяется int I и
c->func<I>(...);
}
};
class B{
template <int I> void foo(...){}
template <int I> void bar(...){}
};
использоваться должно как то так
A a;
a.call<... &B::foo ...>(b);
...
a.call<... &B::bar ...>(b);
типы аргументов у foo и bar разные.
Общий смысл - не дублировать портянку в A::call. Чо то пока не выходит ни так ни эдак;-(