C ++: utwórz własny dyspozytor funkcji z szablonu zmiennego

Mam pewne funkcje, które odczytują różne typy z danych serializowanych, np .:

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

Następnie mam różne funkcje wywołania zwrotnego, które przyjmują dowolne parametry, np .:

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

Chcę wywołać różne wywołania zwrotne z argumentami odczytanymi ze zdrirializowanego strumienia danych. Chciałbym jak najbardziej zautomatyzować kod podstawowy. Myślałem, że mogę użyć szablonów. Gdybym miał jakąś klasę Dyspozytora, np .:

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

    SOMEFUNCTIONTYPE callback;
    DataDeserializer myDeserializer;
};

Następnie zadeklaruj różnych konkretnych dyspozytorów:

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

Potem, kiedy chcę wysłać, po prostu dzwonię:

myDispatcherB.dispatch();

który pod spodem rozwinąłby się w coś takiego:

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

Czy jest to możliwe dzięki szablonom zmiennym C ++ 11? Przeczytałem trochę na ich temat i wydaje się, że rekursja jest często używana.

questionAnswers(2)

yourAnswerToTheQuestion