Je travaille sur une architecture basée sur les événements pour un projet de recherche. Le système utilise actuellement la signalisation Qt, mais nous essayons de nous éloigner de Qt, j'ai donc besoin de quelque chose qui fonctionnera presque aussi bien que la boucle d'événements Qt et les signaux à travers les threads. Probablement contre mon meilleur jugement, j'ai choisi d'utiliser des modèles variadic pour créer un événement générique qui sera utilisé pour effectuer le rappel dans le thread de destination.Liste de paramètres étendue pour le modèle variadique
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;
};
Je n'ai rien trouvé qui indique si cela est possible. Cependant, j'ai du mal à croire que ce n'est pas le cas. Compte tenu de cela, je me demandais s'il y avait un moyen de faire quelque chose comme ça et s'il n'y en a pas, pourquoi? Aussi, si quelqu'un a une meilleure façon de faire cela, je serais heureux de la suggestion.
Pour répondre à votre première question, avez-vous essayé de compiler ceci? – MSN
Si vous voulez quelque chose de vraiment similaire aux signaux Qt, mais sans utiliser Qt, vous pouvez essayer [Boost.Signals] (http://www.boost.org/doc/libs/1_43_0/doc/html/signals.html) (ou regardez le code pour dessiner un peu d'inspiration, mais ils n'utilisent pas encore C++ 0x). –
Oui, j'ai essayé de compiler ceci, et la seule partie qui pose problème est celle des args ... passer en bas. –