lista de parámetros ampliada para plantilla variadic

Estoy trabajando en una arquitectura basada en eventos para un proyecto de investigación. El sistema actualmente usa señalización Qt, pero estamos tratando de alejarnos de Qt, por lo que necesito algo que funcione casi tan bien como el bucle de eventos Qt y las señales a través de los hilos.

Probablemente en contra de mi mejor criterio, he optado por usar plantillas variadas para crear un evento genérico que se utilizará para realizar la devolución de llamada en el hilo 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;
};

No he encontrado nada que indique si esto es posible. Sin embargo, me cuesta creer que no lo sea. Dado eso, me preguntaba si hay una manera de hacer algo como esto y si no la hay, ¿por qué? Además, si alguien tiene una mejor manera de hacerlo, agradecería la sugerencia.

Respuestas a la pregunta(2)

Su respuesta a la pregunta