Preguntas etiquetadas con templates

La etiqueta de plantillas se usa en múltiples contextos: programación genérica (especialmente C ++) y generación de datos / documentos mediante motores de plantillas. Cuando utilice esta etiqueta en la implementación, preguntas pesadas: etiquete el lenguaje de código en el que está escrita la implementación.

5
¿Son los literales de plantilla ES6 más rápidos que la concatenación de cadenas?
¿La generación de código HTML se ejecuta considerablemente más rápido en los navegadores modernos cuando se usa concatenación de cadenas o literales de plantilla en ES6? Por ejemplo: Concatenación de cadenas "<body>"+ "<article>"+ "<time datetime='" + date.toISOString() +"'>"+ date +"</time>"+ "</article>"+ "</body>" Plantilla literal `<body> <article> <time datetime='${ date.toISOString() }'>${ …

6
Código duplicado usando c ++ 11
Actualmente estoy trabajando en un proyecto y tengo el siguiente problema. Tengo un método C ++ que quiero trabajar de dos formas diferentes: void MyFunction() { foo(); bar(); foobar(); } void MyFunctionWithABonus() { foo(); bar(); doBonusStuff(); foobar(); } Y me gustaría no duplicar mi código porque la función real es …
80 c++  c++11  templates 


1
Plantillas anidadas con alcance dependiente
¿Qué es el alcance dependiente y cuál es el significado de typename en el contexto del siguiente error? $ make g++ -std=gnu++0x main.cpp main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope make: *** [all] Error 1 /* * main.cpp */ #include <vector> #include <memory> …
79 c++  templates  scope  nested 

3
¿Cómo puedo obtener la profundidad de un std :: vector multidimensional en tiempo de compilación?
Tengo una función que toma una std::vectordimensión multidimensional y requiere que se pase la profundidad (o el número de dimensiones) como parámetro de plantilla. En lugar de codificar este valor, me gustaría escribir una constexprfunción que tome std::vectory devuelva la profundidad como unsigned integervalor. Por ejemplo: std::vector<std::vector<std::vector<int>>> v = { …

2
¿Por qué remove_reference no funciona en las funciones?
Me encontré con algo extraño al hacer una metaprogramación de plantilla el otro día. Básicamente se trata de esta afirmación, no (como era de esperar) pasar. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Al principio pensé que estaba cometiendo un error sintáctico al definir una referencia de función, pero esta afirmación pasa, mostrando que ese …
38 c++  templates  types  c++17 

4
Meta programación de plantillas
¿Alguien puede explicarme por qué la primera plantilla de metaprogramación va a un ciclo infinito, pero la segunda se ejecuta correctamente? #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static …

4
Sobrecargar una función usando plantillas
Estoy tratando de definir una función usando plantillas y quiero que el nombre de tipo sea int o anEnum (una enumeración específica que había definido). He intentado lo siguiente pero he fallado: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T …

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>, …

4
Contenedor STL con un tipo específico como argumento genérico
¿Hay alguna manera de que pueda hacer una función que tome un contenedor con un tipo específico (digamos std::string) como parámetro void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } y llamarlo para cada tipo de contenedor stl como entrada? como arriba? std::set<std::string> …






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.