Als «templates» getaggte Fragen

Das Templates-Tag wird in mehreren Kontexten verwendet: generische Programmierung (insbesondere C ++) und Daten- / Dokumentgenerierung mithilfe von Template-Engines. Wenn Sie dieses Tag für umfangreiche Fragen zur Implementierung verwenden, markieren Sie die Codesprache, in der die Implementierung geschrieben ist.


1
C ++ 20-Definition außerhalb der Klasse in einer Vorlagenklasse
Bis zum C ++ 20-Standard von C ++, als wir einen Operator außerhalb der Klasse definieren wollten, der einige private Mitglieder einer Vorlagenklasse verwendet, verwendeten wir ein ähnliches Konstrukt: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { …
12 c++  templates  c++20 

2
Ein Konzept an eine Funktion übergeben
Ist es auch möglich, diese Prädikate für Algorithmen zur Kompilierungszeit wiederzuverwenden, da Konzepte als Prädikate zur Kompilierungszeit definiert sind? Wäre es beispielsweise möglich zu überprüfen, ob alle Typen in einem Tupel einem Konzept entsprechen? Soweit ich gesehen habe, ist es nicht möglich, ein Konzept in irgendeiner Weise an eine Funktion …


1
Kann eine variable Vorlage als Vorlagenvorlagenargument übergeben werden?
Das folgende unsinnige Beispiel wird nicht kompiliert. Gibt es jedoch eine andere Möglichkeit, eine Variablenvorlage als Vorlagenvorlagenargument zu übergeben? 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>(); } Probieren Sie den …

2
Abzug der Argumenttypen für C ++ - Vorlagenvorlagen
Ich habe Code, der Übereinstimmungen eines Musters findet und ausdruckt, indem er über den Container mit Zeichenfolgen geht. Der Druck wird in der Funktion ausgeführt foo , die als Templat wird Der Code #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> …

1
Problem in GCC / C ++ 17 mit Vorlagenvorlagenklasse
Betrachten Sie die 2 folgenden Überlastungen template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Der erste funktioniert für reguläre Klassen, während der zweite für Vorlagen funktioniert, die nicht instanziiert sind. Zum Beispiel: 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
Warum muss im folgenden Fall kein Typname für abhängige Typen verwendet werden?
Ich habe gelesen , über Bezug von einer Art zu entfernen, hier . Es gibt das folgende Beispiel: #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 …





1
Clang / GCC-Inkonsistenz in der Klassenspezialisierung
Ich kam dieses Problem auf bei dem Versuch , sich zu spezialisieren tuple_size/ tuple_elementeine benutzerdefinierte Klasse in C ++ 17 für strukturierte Bindung. Der folgende Code wird in GCC kompiliert, jedoch nicht in Clang (beide Trunk-Versionen, siehe Link unten). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename …


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.