Questions marquées «variadic-templates»

8
«Décompresser» un tuple pour appeler un pointeur de fonction correspondant
J'essaie de stocker dans un std::tuplenombre variable de valeurs, qui seront plus tard utilisées comme arguments pour un appel à un pointeur de fonction qui correspond aux types stockés. J'ai créé un exemple simplifié montrant le problème que j'ai du mal à résoudre: #include <iostream> #include <tuple> void f(int a, …

6
make_unique et transfert parfait
Pourquoi n'y a-t-il pas de std::make_uniquemodèle de fonction dans la bibliothèque C ++ 11 standard? je trouve std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); un peu bavard. Les éléments suivants ne seraient-ils pas beaucoup plus agréables? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Cela cache newbien et ne mentionne le type qu'une seule …

1
Comment appeler std :: forward sur tous les arguments d'une fonction variadique?
J'écrivais juste une fabrique d'objets génériques et j'utilisais la méta-bibliothèque du préprocesseur boost pour créer un modèle variadique (en utilisant 2010 et cela ne les prend pas en charge). Ma fonction utilise des références rval et std::forwardpour faire un transfert parfait et cela m'a fait réfléchir ... quand C ++ …


2
Quelles sont les règles du jeton «…» dans le contexte des modèles variadiques?
En C ++ 11, il existe des modèles variadiques comme celui-ci: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Il y a quelques curiosités à ce sujet: L'expression std::forward<Args>(args)...utilise les deux Argset argsun seul ...jeton. De plus, std::forwardune fonction de modèle non …

4
Comment stocker les arguments de modèles variadiques?
Est-il possible de stocker un pack de paramètres d'une manière ou d'une autre pour une utilisation ultérieure? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this …


10
Pretty-print std :: tuple
Ceci fait suite à ma question précédente sur les jolis conteneurs STL , pour lesquels nous avons réussi à développer une solution très élégante et totalement générale. Dans cette prochaine étape, je voudrais inclure la jolie impression pour std::tuple<Args...>, en utilisant des modèles variadiques (donc c'est strictement C ++ 11). …

3
Comment puis-je créer un produit cartésien de listes de types en C ++?
Explicite. Fondamentalement, disons que j'ai des listes de types comme ceci: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Ils peuvent être des nombres variés de listes de types. Comment obtenir une liste de types de produits cartésiens? result = type_list< type_list<int, somestructB, double>, …

3
Modèles variadiques: dépliez les arguments en groupes
J'ai une fonction qui prend deux arguments: template <typename T1, typename T2> void foo(T1 arg1, T2 arg2) { std::cout << arg1 << " + " << arg2 << '\n'; } Et un variadic qui devrait transmettre ses arguments par paires: template <typename... Args> void bar(Args&&... args) { static_assert(sizeof...(Args) % 2 …

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.