Als «c++-concepts» getaggte Fragen

5
Warum benötigen wir Anforderungen erfordert?
Eine der Ecken von C ++ 20-Konzepten ist, dass es bestimmte Situationen gibt, in denen Sie schreiben müssen requires requires. Zum Beispiel dieses Beispiel aus [expr.prim.req] / 3 : Ein Requires-Ausdruck kann auch in einer Requires-Klausel ([temp]) verwendet werden, um Ad-hoc-Einschränkungen für Vorlagenargumente wie das folgende zu schreiben: template<typename T> …
161 c++  c++-concepts  c++20 


1
void_t "kann Konzepte implementieren"?
Ich habe den zweiten Teil von Walter Browns CppCon2014-Vortrag über Template-Metaprogrammierung gesehen , in dem er die Verwendung seiner neuartigen void_t<>Konstruktion diskutierte . Während seines Vortrags stellte Peter Sommerlad ihm eine Frage, die ich nicht ganz verstand. (Link geht direkt auf die Frage, der diskutierte Code fand direkt davor statt) …

3
C ++ 20-Konzepte: Welche Vorlagenspezialisierung wird ausgewählt, wenn das Vorlagenargument für mehrere Konzepte geeignet ist?
Gegeben : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> …

1
Muss `gleichheit_vergleich_mit`` gemeinsame_referenz` erfordern?
Das Konzeptequality_­comparable_with<T, U> soll erklären, dass Objekte vom Typ Tund Umiteinander verglichen werden können, und wenn dies der Fall ist, hat dies die erwartete Bedeutung. Das ist gut. Dieses Konzept muss common_reference_t<T&, U&>jedoch auch existieren. Der Hauptimpuls für common_referenceund die damit verbundene Funktionalität scheint darin zu bestehen, Proxy-Iteratoren zu ermöglichen …

1
Die Konzept-TS-Prüfung ignoriert den Modifikator für den privaten Zugriff
Ich möchte ein Konzept Indexable schreiben, das bedeutet, dass eine Sequenz entweder Anfang / Ende hat, die RandomAccessIterator zurückgibt, oder operator [] definiert ist und einen Wert vom Typ nicht void zurückgibt. Ich habe Ideen aus Stroustrups Artikel für das Sequenzkonzept verwendet und es erweitert mit: template <class T> concept …
10 c++  c++-concepts 

1
Sind erforderliche Ausdrücke zulässig, um Variablen des umschließenden Bereichs zu erfassen?
Im folgenden Beispiel werden die Funktionsargumente verwendet, um mit einem erforderlichen Ausdruck zu testen, ob ein Ausdruck, der sie verwendet, gut geformt ist. Der Requires-Ausdruck benötigt keine Argumente. Es verwendet die Variablen im Funktionsumfang direkt: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr …

2
Wie implementiere ich die verallgemeinerte Form von std :: same_as (dh für mehr als zwei Typparameter), die unabhängig von der Parameterreihenfolge ist?
Hintergrund Wir wissen, dass das Konzept std::same_asunabhängig von der Ordnung ist (mit anderen Worten, symmetrisch): std::same_as<T, U>äquivalent zu std::same_as<U, T>( verwandte Frage ). In dieser Frage möchte ich etwas Allgemeineres implementieren: template <typename ... Types> concept same_are = ...Das prüft, ob die Typen im Paket Typesgleich sind. Mein Versuch #include …
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.