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
Der Versuch, Vorlagen und Namenssuche zu verstehen
Ich versuche die folgenden Codefragmente zu verstehen Snippet # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Weder gcc9 noch clang9 werfen hier einen Fehler. F. Warum wird dieser Code kompiliert? Instanziieren wir nicht, A<B>wenn wir von B …

1
Eliminierung der if / else-Verzweigung in C ++ zur Kompilierungszeit
Im folgenden Codebeispiel ifhängt die Anweisung vom boolVorlagenparameter ab, bei dem es sich um eine Konstante zur Kompilierungszeit handelt. Compiler behandeln diesen Code unterschiedlich: MSVC schlägt mit einem Verbindungsfehler fehl (was ich erwartet habe), da die Vorlagenfunktion in der elseVerzweigung nicht auf den trueWert der Vorlagenparameter spezialisiert ist (obwohl sie …

1
Wie man die vorgeschlagene Auflösung von # 1664 versteht
Nachdem ich mir die vorgeschlagene Auflösung von # 1664 ( vorgeschlagene Auflösung 1664 ) angesehen habe, bin ich verwirrt über die Regeln eines Standardarguments einer Funktionsvorlage. Zitieren Sie den Inhalt hier: Gemäß 8.1.5 [expr.prim.lambda] Absatz 3 Der Schließungstyp wird im kleinsten Blockbereich, Klassenbereich oder Namespace-Bereich deklariert, der den entsprechenden Lambda-Ausdruck …

1
Schlechter Typabzug beim Übergeben eines überladenen Funktionszeigers und seiner Argumente
Ich versuche, einen Wrapper bereitzustellen, um std::invokeden Funktionstyp auch dann abzuleiten, wenn die Funktion überlastet ist. (Ich habe gestern eine verwandte Frage für die Variadic- und Methodenzeigerversion gestellt). Wenn die Funktion ein Argument hat, funktioniert dieser Code (C ++ 17) unter normalen Überlastbedingungen wie erwartet: #include <functional> template <typename ReturnType, …

7
Ist es möglich, rekursiv ganzzahlige Vorlagenparameter in C ++ abzugleichen?
Ich habe folgendes Problem. Ich definiere einen N-dimensionalen Vektor als solchen #include <vector> #include <utility> #include <string> template <int N, typename T> struct NVector{ typedef std::vector<typename NVector<N-1,T>::type> type; }; template <typename T> struct NVector<1,T> { typedef std::vector<T> type; }; Ich möchte eine Funktion Map höherer Ordnung schreiben , die die …


2
Vorlagenklassenoperator + Überladungsrückgabetyp
Ich versuche, eine Num-Klasse mit Vorlagen zu erstellen. Diese Klasse muss ein öffentliches Attribut valmit dem Typ type haben T, der der einzige Vorlagenparameter ist. Wenn man einen Wert angibt, valsollte das Attribut ( ) mit diesem Wert initialisiert werden. Dazu habe ich folgenden Code erstellt: #include <iostream> template<class T> …

2
Warum ist eine Teilklassenvorlagenspezialisierung für eine übereinstimmende Vorlagenklasse mit einer anderen Teilspezialisierung ohne Vorlagenübereinstimmung nicht eindeutig?
Die Frage mag zu schwer zu beschreiben sein, aber hier ist ein minimales Beispiel: #include <iostream> #include <type_traits> template <class T, class U, class Enabler> struct my_trait : std::false_type {}; template <class T, class U> struct my_trait<T, U, std::enable_if_t<std::is_same<T, U>::value>> : std::true_type {}; template <class T> class temped {}; template …

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.