C ++: создание диспетчера пользовательских функций из шаблона переменной

У меня есть некоторые функции, которые читают различные типы из сериализованных данных, например:

class DataDeserializer
{
    int getInt();
    std::string getString();
    MyClass getMyClass();
}

Затем у меня есть различные функции обратного вызова, которые принимают произвольные параметры, например:

void callbackA (int, int, int);
void callbackB (int, std::string);
void callbackC (std::string, int, MyClass, int);

Я хочу вызвать различные обратные вызовы с аргументами, прочитанными из потока десериализованных данных. Я хотел бы максимально автоматизировать шаблонный код. Я думал, может быть, я мог бы использовать шаблоны. Если бы у меня был какой-то класс Dispatcher, например:

template <SOMETHING??> class Dispatcher
{
    void dispatch()
    {
        // ???? 
    }

    SOMEFUNCTIONTYPE callback;
    DataDeserializer myDeserializer;
};

Затем объявите различных конкретных диспетчеров:

Dispatcher<int,int,int>                  myDispatcherA (deserializer, callbackA);
Dispatcher<int,std::string>              myDispatcherB (deserializer, callbackB);
Dispatcher<std::string,int,MyClass,int>  myDispatcherC (deserializer, callbackC);

Затем, когда я хочу отправить, я просто позвоню:

myDispatcherB.dispatch();

который снизу расширится до чего-то вроде этого:

void dispatch()
{
    callback (myDeserializer.getString(), myDeserializer.getInt(), myDeserializer.getMyClass(), myDeserializer.getInt());
}

Возможно ли это с C ++ 11 variadic шаблонами? Я немного прочитал о них, и кажется, что рекурсия используется очень часто.

Ответы на вопрос(2)

Ваш ответ на вопрос