Domande taggate «variadic-templates»

8
"Spacchettare" una tupla per chiamare un puntatore a funzione corrispondente
Sto cercando di memorizzare in un std::tuplenumero variabile di valori, che verranno successivamente utilizzati come argomenti per una chiamata a un puntatore a funzione che corrisponde ai tipi memorizzati. Ho creato un esempio semplificato che mostra il problema che sto lottando per risolvere: #include <iostream> #include <tuple> void f(int a, …

6
make_unique e perfetto inoltro
Perché non esiste un std::make_uniquemodello di funzione nella libreria C ++ 11 standard? io trovo std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); un po 'prolisso. Quanto segue non sarebbe molto più bello? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Questo nasconde newbene e menziona il tipo solo una volta. Ad ogni modo, ecco …


2
Qual è il significato del token "... ..."? cioè operatore con doppia ellissi sul pacchetto parametri
Durante la navigazione nell'attuale implementazione di gcc delle nuove intestazioni C ++ 11, sono incappato nel token "......". Puoi controllare che il codice seguente venga compilato correttamente [tramite ideone.com]. template <typename T> struct X { /* ... */ }; template <typename T, typename ... U> struct X<T(U......)> // this line …

2
Quali sono le regole per il token "..." nel contesto dei modelli variadici?
In C ++ 11 ci sono modelli variadici come questo: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Ci sono alcune curiosità su questo: L'espressione std::forward<Args>(args)...usa entrambi Argse argsma solo un ...token. Inoltre std::forwardè una funzione template non variadica che accetta solo …

4
Come memorizzare gli argomenti del modello variadico?
È possibile memorizzare un pacchetto di parametri in qualche modo per un uso successivo? 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 will be possible …

11
Pretty print std :: tuple
Questo è un follow-up alla mia precedente domanda sui contenitori STL graziosi , per i quali siamo riusciti a sviluppare una soluzione molto elegante e del tutto generale. In questo passaggio successivo, vorrei includere la stampa graziosa per std::tuple<Args...>, utilizzando modelli variadici (quindi questo è rigorosamente C ++ 11). Perché …


3
Come posso creare un modo cartesiano di elenchi di tipi in C ++?
Autoesplicativo. Fondamentalmente, dire che ho elenchi di tipi in questo modo: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Possono essere un numero variabile di elenchi di tipi. Come posso ottenere una lista dei tipi di prodotti cartesiani? result = type_list< type_list<int, somestructB, double>, …

3
Modelli variabili: spiega argomenti in gruppi
Ho una funzione che accetta due argomenti: template <typename T1, typename T2> void foo(T1 arg1, T2 arg2) { std::cout << arg1 << " + " << arg2 << '\n'; } E una variadica che dovrebbe inoltrare i suoi argomenti in coppia: template <typename... Args> void bar(Args&&... args) { static_assert(sizeof...(Args) % …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.