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.

1
¿Se puede pasar una plantilla variable como argumento de plantilla?
El siguiente ejemplo sin sentido no se compila, pero ¿hay alguna otra forma de pasar una plantilla variable como argumento de plantilla? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } …

2
Deducción de tipos de argumentos de plantilla de plantilla C ++
Tengo un código que encuentra e imprime las coincidencias de un patrón que va sobre el contenedor de cadenas. La impresión se realiza en la función foo que tiene la plantilla El código #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> …

1
Problema en GCC / C ++ 17 con la clase de plantilla de plantilla
Considere las 2 siguientes sobrecargas template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } El primero funciona para clases regulares, mientras que el segundo funciona para plantillas que no se instancian. Por ejemplo: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields …
10 c++  templates  gcc  clang  c++17 


3
¿Por qué no se requiere usar typename para tipos dependientes en el siguiente caso?
He estado leyendo sobre eliminar la referencia de un tipo, aquí . Da el siguiente ejemplo: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, …





1
inconsistencia de clang / gcc en la especialización de clase
Encontré este problema al intentar especializar tuple_size/ tuple_elementpara una clase personalizada en C ++ 17 para el enlace estructurado. El siguiente código se compila en GCC, pero no en clang (ambas versiones troncales, ver el enlace a continuación). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, …




1
Cómo entender la resolución propuesta de # 1664
Después de mirar la resolución propuesta de # 1664 ( resolución propuesta 1664 ), estoy confundido por las reglas de un argumento predeterminado de una plantilla de función. Cite el contenido aquí: De acuerdo con 8.1.5 [expr.prim.lambda] párrafo 3 El tipo de cierre se declara en el ámbito de bloque …

1
Mala deducción de tipo al pasar el puntero de función sobrecargado y sus argumentos
Estoy tratando de proporcionar un contenedor std::invokepara hacer el trabajo de deducir el tipo de función incluso cuando la función está sobrecargada. (Hice una pregunta relacionada ayer para la versión de puntero variadic y método). Cuando la función tiene un argumento, este código (C ++ 17) funciona como se espera …

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.