lista de parâmetros expandida para modelo variável

Estou trabalhando em uma arquitetura baseada em eventos para um projeto de pesquisa. Atualmente, o sistema usa sinalização Qt, mas estamos tentando nos afastar do Qt, por isso preciso de algo que funcione quase tão bem quanto o loop de eventos Qt e os sinais através dos threads.

Provavelmente, contra meu julgamento, escolhi usar modelos variados para criar um evento genérico que será usado para executar o retorno de chamada no encadeamento de destino.

template<typename dest, typename... args>
class Event {
  public:
    Event(dest* d, void(dest::*func)(args...), args... a)
      : d(d), func(func), pass(a...) { }

    virtual void perform() {
      (d->*func)(pass...);
    }

  protected:

    dest* d;
    void(dest::*func)(args...);
    args... pass;
};

Não encontrei nada que indique se isso é possível. No entanto, tenho dificuldade em acreditar que não é. Dado isso, eu queria saber se existe uma maneira de fazer algo assim e se não existe, por quê? Além disso, se alguém tiver uma maneira melhor de fazer isso, eu gostaria de receber a sugestão.

questionAnswers(2)

yourAnswerToTheQuestion