Erweiterte Parameterliste für variadische Vorlage

Ich arbeite an einer Event-basierten Architektur für ein Forschungsprojekt. Das System verwendet derzeit die Qt-Signalisierung, aber wir versuchen, von Qt abzuweichen. Ich benötige also etwas, das fast so gut funktioniert wie die Qt-Ereignisschleife und die Signale über Threads hinweg.

Wahrscheinlich habe ich mich gegen mein besseres Urteil entschieden, verschiedene Vorlagen zu verwenden, um ein generisches Ereignis zu erstellen, das zum Ausführen des Rückrufs im Ziel-Thread verwendet wird.

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

Ich habe nichts gefunden, was darauf hinweist, ob dies möglich ist. Es fällt mir jedoch schwer zu glauben, dass dies nicht der Fall ist. Angesichts dessen habe ich mich gefragt, ob es eine Möglichkeit gibt, so etwas zu tun, und wenn nicht, warum? Auch wenn jemand eine bessere Möglichkeit dazu hat, würde ich den Vorschlag begrüßen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage