Preguntas etiquetadas con variadic-templates

8
"Desempaquetar" una tupla para llamar a un puntero de función coincidente
Estoy tratando de almacenar un std::tuplenúmero variable de valores, que luego se utilizarán como argumentos para una llamada a un puntero de función que coincida con los tipos almacenados. He creado un ejemplo simplificado que muestra el problema que estoy luchando por resolver: #include <iostream> #include <tuple> void f(int a, …

6
make_unique y reenvío perfecto
¿Por qué no hay std::make_uniqueuna plantilla de función en la biblioteca estándar de C ++ 11? Encuentro std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); Un poco detallado. ¿No sería mucho mejor lo siguiente? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Esto oculta newmuy bien y solo menciona el tipo una vez. De todos …



2
¿Cuáles son las reglas para el token “…” en el contexto de las plantillas variadas?
En C ++ 11 hay plantillas variadas como esta: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Hay algunas curiosidades sobre esto: la expresión std::forward<Args>(args)...usa ambos Argsy, argspero solo una ...ficha. Además, std::forwardes una función de plantilla no variada que toma solo …

4
¿Cómo almacenar argumentos de plantilla variadic?
¿Es posible almacenar un paquete de parámetros de alguna manera para un uso posterior? 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 …

10
Pretty-print std :: tupla
Esta es una continuación de mi pregunta anterior sobre contenedores STL de impresión bonita , para la cual logramos desarrollar una solución muy elegante y completamente general. En este siguiente paso, me gustaría incluir la impresión bonita para std::tuple<Args...>, usando plantillas variadas (por lo que esto es estrictamente C ++ …

3
¿Cómo puedo crear un producto cartesiano de listas de tipos en C ++?
Autoexplicativo. Básicamente, digamos que tengo listas de tipos así: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Pueden ser un número variado de listas de tipos. ¿Cómo obtengo una lista de tipos de productos cartesianos? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, …

3
Plantillas variables: desplegar argumentos en grupos
Tengo una función que toma dos argumentos: template <typename T1, typename T2> void foo(T1 arg1, T2 arg2) { std::cout << arg1 << " + " << arg2 << '\n'; } Y una variable que debe reenviar sus argumentos en pares: template <typename... Args> void bar(Args&&... args) { static_assert(sizeof...(Args) % 2 …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.