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 use esta etiqueta en la implementación, preguntas pesadas: etiquete el lenguaje de código en el que está escrita la implementación.

templates...

¿Hay alguna forma de permitir que dos o más instancias de plantillas se refieran mutuamente? Ejemplo: /* invalid C++ */ /* we suppose MyTemplate1 and MyTemplate2 are declared */ typedef MyTemplate1<MyInstance2> MyInstance1; typedef MyTemplate2<MyInstance1> MyInstance2; Supongo que no hay ninguno, ....
24 ago. 2020 a las 23:54
Estoy codificando un árbol B en C ++, pero cuando sobrecargo operator<<, no se puede compilar. Mi código: #include <cassert> #include <cstddef> #include <iostream> #include <memory> #include <vector> #include <utility> template <typename T, std::size_t t> class BTree; template <typename T, std::si....
19 ago. 2020 a las 16:22
Trabajando en C ++, a veces trabajo con mapas anidados. Por ejemplo, hipotéticamente: enum Color { RED, GREEN, BLUE}; enum Shape { CIRCLE, SQUARE, TRIANGLE }; std::unordered_map<Color, std::unordered_map<Shape, int>> shapeColorCount; Para estas situaciones, sería útil usar plantillas variadas para ....
Primero, ¿es posible devolver diferentes tipos dependiendo de alguna condición? En segundo lugar, ¿existe una forma más concisa de manejar este tipo de mapeo, sin enumerar todos los posibles if y else? Aquí hay montones (y montones) de if's, and's y but's Básicamente, quiero definir una tupla incomp....
10 ago. 2020 a las 12:16
Supongamos que tengo una clase que extiende un contenedor (STL) y proporciona una función de miembro begin habitual: #include <vector> template <typename Cont> struct Bar { Cont c; auto my_begin() { return begin(c); } }; int main() { Bar<std::vector<int>> b; b.my_begin(); } Por AD....
10 ago. 2020 a las 12:13
Así que he estado aprendiendo sobre plantillas y lambdas, así que intenté combinar las dos. Estoy tratando de crear un typedef con plantilla que especifique lo que se supone que la lambda debe devolver y aceptar. Funciona bien para no capturar lambdas pero no puede manejar ningún lambda que capture.....
10 ago. 2020 a las 09:24
#include <iostream> #include <array> #define print(x) std::cout << x #define println(x) std::cout << x << std::endl template<std::size_t Size> void Print(std::array<int, Size>& arr) { for (int i = 0; i < Size; i++) { println(arr[i]); } } int main() { std::array<int, 5> arr = {....
9 ago. 2020 a las 17:16
No puedo hacer que este código se ejecute correctamente en Ubuntu 20.04 (gcc), y solo puedo hacer que se deduzca la plantilla para la rama else (enteros), ignorando todas las deducciones para bool, double y std: string Incluso probé la std :: enable_if pero fue en vano ... ¿Qué me estoy perdiendo aq....
7 ago. 2020 a las 19:18
Tengo una clase de plantilla que usa dos tipos: template<typename T1,typename T2> class Foo { ... }; Necesito escribir una función que tome cualquier número de variables Foo: template <typename T1, typename T2, typename... Others> size_t getSize(Foo<T1,T2> *f, Foo<Others>*... o) { ... }; Si implem....
Estoy tratando de crear una función genérica Foo que acepte un argumento y Op lo que se le aplicará. template <template<class> class Op> float foo(float boo) { return Op(boo); } template <template<class> class Op> float foo(float a, float b) { return Op(a, b); } void caller() { f....
5 ago. 2020 a las 19:26
¿Puedo de alguna manera hacer un mapa de los parámetros de la plantilla? digamos que tengo la siguiente función: template<typename T> T SumCoefficients(const std::vector<T>& coeffs) { T sum = static_cast<T>(0); for(int i=0; i<100; ++i) { sum += SomeFunc<T>(i) * coeffs[i]; } return sum; }....
4 ago. 2020 a las 11:49
Estaba leyendo la documentación del objeto de matriz en C ++ aquí: https: //en.cppreference .com / w / cpp / container / array y vi que el encabezado de la plantilla era template< class T, std::size_t N > struct array; ¿Por qué se pasa N como un parámetro que no es de tipo en lugar de que l....
1 ago. 2020 a las 11:56
Tengo una función de plantilla de C ++ que parece template <class T> void Item::SetValue(T value){ std::ostringstream oss; oss << value; this->value = oss.str(); } Ha estado funcionando bien durante años hasta hoy, cuando mi sistema operativo (vxworks) me lanzó una excepción SPE. Esto....
31 jul. 2020 a las 21:16
Teniendo este código: template <class IIt, class OIt> OIt copy2(IIt begin, IIt end, OIt dest) { while (begin != end) { //make gap between element addresses for (int i = 0; i < 99999999; i++) { dest++; } *dest++ = *begin++; } return dest; } int main....
31 jul. 2020 a las 20:19
Me preguntaba si alguien conoce una forma de crear declaraciones de tipo repetitivas, y dado que esto puede ser confuso, un ejemplo será útil: Para nuestro proyecto, necesitamos tener declaraciones de función y tipo como: using FunType = std::function<void(double,double,double,double,double,doub....
30 jul. 2020 a las 10:39
Tengo una clase con plantilla que acepta un contenedor de MyIDType: std::array<MyIDType, SIZE> std::unordered_map<A, MyIDType> std::unordered_map<B, MyIDType> etcetera Me gustaría afirmar estáticamente que MyIDType es el elemento. Intenté esto: template<class CONTAINER> class Cod { using ELEMENT....
29 jul. 2020 a las 18:42
Tengo una clase que almacena un std::array. El tamaño de la matriz se evalúa en tiempo de compilación, esto se debe a que la aplicación se ejecuta en un dispositivo integrado, por lo que no hay asignaciones dinámicas :(. El código se parece a esto: template<uint8_t size> class A { //some constru....
Tengo una clase con plantilla donde necesito pasar tanto el contenedor como el elemento del contenedor como parámetros de plantilla. Por ejemplo: template<class CONTAINER, class ELEMENT> class M { void addElement(const ELEMENT e){} CONTAINER container; }; Entonces la clase se instanciaría c....
29 jul. 2020 a las 14:51
Estoy tratando de crear una clase que tenga un std::bitset, y se supone que otra clase debe tomarlo como parámetro y crear un std::array obteniendo el tamaño del std::bitset de la clase. Me gusta esto: template<size_t size> class Individual{ public: std::bitset<size> data; }; template<typename ....
28 jul. 2020 a las 20:09
¿Cómo puedo deshabilitar el constructor de copia de una clase de plantilla? P.ej.: template<typename T> struct X { T property; constexpr X(const T property): property(property) { } friend std::ostream& operator<<(std::ostream& out, const X& x) { return out << "{ " << x.property ....
28 jul. 2020 a las 00:33
Quiero escribir una función C ++ como: template <T<int> > void printIntegers(T<int> ints) { for (int i: ints) printf("%d ", i); } Porque quiero que T<int> sea vector<int> o list<int> o cualquier otro contenedor STL. ¿Cómo debo escribir el parámetro de plantilla?....
27 jul. 2020 a las 14:46
Soy nuevo en cpp y estoy probando varias cosas. Este parece que no puedo entender por mi cuenta. #include <cstdio> #include <stdexcept> template <class E, class V> struct Pair { E first; V second; Pair(E fst, V snd) : first(fst), second(snd) {} E getFirst() { return first; } ....
26 jul. 2020 a las 20:36
En mi clase String, quiero hacer un ctor que acepte argumentos de longitud variable (const char*) como paquete de parámetros con plantilla variadic. Algo como seguir class String { public: String(const char*... xList) { // Internally appending all const char* present in xList ....
25 jul. 2020 a las 08:43
Al estudiar las plantillas, estaba interesado en cómo puedo obtener los eventos de hacer clic en este o aquel botón de plantilla. Usando una plantilla simple como ejemplo: <Window.Resources> <ControlTemplate x:Key="ControlTemplateKey" TargetType="{x:Type ContentControl}"> <StackPanel> ....
24 jul. 2020 a las 17:28
Estoy tratando de usar C ++ 17 if constexpr para la compilación condicional, pero no se comporta como esperaba. Por ejemplo, con el siguiente código, C ++ aún compila el código definido por la macro X2, #include <map> #include <string> #include <iostream> #include <type_traits> #define X1 pp("x") #....
23 jul. 2020 a las 06:27