расширенный список параметров для вариационного шаблона

Я работаю над архитектурой на основе событий для исследовательского проекта. В настоящее время система использует сигнализацию Qt, но мы пытаемся отойти от Qt, поэтому мне нужно что-то, что будет работать почти так же хорошо, как цикл событий Qt и сигналы через потоки.

Возможно, вопреки моему здравому мнению, я решил использовать шаблоны с переменным числом аргументов для создания общего события, которое будет использоваться для выполнения обратного вызова в целевом потоке.

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;
};

Я не нашел ничего, что указывало бы, возможно ли это. Однако мне трудно поверить, что это не так. Учитывая это, мне было интересно, есть ли способ сделать что-то подобное и если нет, то почему? Кроме того, если у кого-то есть лучший способ сделать это, я бы приветствовал это предложение.

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

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