Pré-dramatique
Bonjour, cette question est peut-être un doublon, mais je suis relativement nouveau dans le domaine de la programmation par modèle et, en fait, je ne parviens pas à trouver une solution simple et courte (-> ne trouve que des mégaoctets de ” roxxor-template-magic ” que je ne comprends pas. ) correspondant à mon problème concret et simple et je me sens un peu perdu maintenant.
Pré-information
Je veux utiliser un “type_container” comme paramètre de modèle pour une classe. Le conteneur est une structure simple, qui devrait également contenir des typedefs pour les packs de parameters de modèle .
Question: (liée à l’exemple en bas)
Comment puis-je définir et aliaser les listes de types dans la structure de conteneur et comment puis-je y accéder et les transférer aux entités nécessaires dans la classe factory? ( Pas de boost et seulement C ++ 11/14/17 )
Exemple: (Comstackrais, si je connaissais une solution)
#include
Solution élaborée actuelle (la meilleure?) (Compilable) (d’après la réponse de John Zwinck)
#include
Vous pouvez réellement utiliser le tuple
:
using PARAMETER_PACK1 = std::tuple; using PARAMETER_PACK2 = std::tuple; typename TYPES::PARAMETER_PACK1 m_tuple;
Il ne vous rest alors qu’un problème: comment déclarer quelque chose comme ceci:
void handlePack2(TYPES::PARAMETER_PACK2... args);
Peut-être:
void handlePack2Impl(typename TYPES::PARAMETER_PACK2 tup); template void handlePack2(Args... args) { handlePack2Impl(std::make_tuple(args...)); }
Pour plus d’idées, commencez ici: Tuple au paquet de parameters (mais méfiez-vous, il existe une méta-programmation de modèles!
En gros, vous ne pouvez pas faire ça. La chose la plus proche que vous puissiez faire est de sauvegarder std::tuple
(ou votre propre variadic_class
qui peut avoir un corps vide), puis de récupérer la liste par de petits modèles magiques