Voici ce que je veux être en mesure de taper:Templating hors d'une liste de longueur arbitirary des types en C++
class foo : public watchKeys<A, B, C> {}; //Or any list of keys
Boost :: mpl a des séquences, qui vous permettent de le faire, mais je n » t veulent avoir à faire:
class foo : public watchKeys<mpl::list<A, B, C> > {};
Je ne me dérange pas d'être « laid » ou bavard à l'intérieur, mais je veux les watchKeys façon est finalement utilisé pour être très simple et intuitive. Je ne peux pas non plus comprendre comment boost le fait, mais ça semble être parce qu'il y a une couche de macros entre moi et les templates.
Comment puis-je faire à ce sujet? Je préférerais pas pour faire la liste géante des modèles pour chaque nombre de types, mais si c'est le seul c'est la seule façon ...
Editer: Je suis devenu assez certain qu'il n'y a pas moyen de faire ce que je veux faire (presque, mais vous ne pouvez pas avoir un nombre variable d'arguments macro), mais la question génère toujours des réponses utiles et informatives.
* Boost.Preprocessor * est utilisé pour des choses fortement dans Boost, est une question de goût bien . Voir par exemple 'BOOST_PP_REPEAT' là: http://www.boost.org/doc/libs/1_42_0/libs/preprocessor/doc/index.html –
Dans ma version de boost (1.38, un an) Boost.Preprocessor n'est pas utilisé pour cela dans boost :: tuple –
Je n'ai pas regardé 'tuple' de façon explicite, mais si jamais vous passez par 'Boost.Function' vous devriez voir ça. –