C ++ 20 ist das Ziel für die Version von C ++ nach C ++ 17. Dieses Tag sollte (zusammen mit dem C ++ - Tag) für Fragen zu C ++ - Funktionen verwendet werden, die für C ++ 20 auf dem richtigen Weg sind.
In seinem kürzlich gehaltenen Vortrag "Type punning in modernem C ++" sagte Timur Doumler , dass std::bit_castdies nicht zum Bit-Casting floatin ein verwendet werden kann, unsigned char[4]da Arrays im C-Stil nicht von einer Funktion zurückgegeben werden können. Wir sollten entweder std::memcpyC ++ 23 (oder später) verwenden oder warten, bis etwas …
Ich versuche, Ausdruckstypen von C ++ zu verstehen, und je mehr ich lese, desto verwirrter war ich, da ich den C ++ - Entwurf sehr schwer zu verdauen finde und daher andere Ressourcen bevorzuge, aber sie widersprechen sich entweder oder berücksichtigen nicht, dass die Wortlaut und Definition zwischen C ++ …
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 …
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 { …
Ich suche nach einer Möglichkeit, leere (Captureless) Lambdas von anderen Lambdas in einer Vorlagenfunktion zu identifizieren. Ich verwende derzeit C ++ 17, bin aber auch neugierig auf C ++ 20-Antworten. Mein Code sieht folgendermaßen aus: template<typename T> auto func(T lambda) { // The aguments of the lambdas are unknown if …
Betrachten Sie die folgenden drei structs: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; Auf typischen Plattformen mit int4 Bytes sind die Größen, Ausrichtungen und die Gesamtauffüllung 1 wie folgt: …
Wir sind jetzt im Jahr 2020 und C ++ 20 kommt zusammen mit der lang erwarteten Funktion der C ++ - Module. Aber nachdem ich ein paar Vorträge über CppCon gesehen habe, finde ich, dass C ++ - Module an einem seltsamen Ort sind, insbesondere für Linux-Paketmanager (pacman, apt, emer, …
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 …
Der folgende Code lässt sich gut mit Clang-Trunk im C ++ 17-Modus kompilieren, bricht jedoch im C ++ 2a-Modus (bevorstehendes C ++ 20) ab: // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; …
Alle Konstruktoren von std :: span sind als constexpr deklariert, aber ich kann anscheinend keinen von ihnen dazu bringen, in einem constexpr-Kontext zu arbeiten. Das Kommentieren eines der folgenden Constexpr führt zu einem Kompilierungsfehler. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; …
Im C ++ 20-Standard wird gesagt, dass Array-Typen implizite Lebensdauertypen sind . Bedeutet dies, dass ein Array für einen nicht impliziten Lebensdauertyp implizit erstellt werden kann? Die implizite Erstellung eines solchen Arrays würde nicht zur Erstellung der Elemente des Arrays führen. Betrachten Sie diesen Fall: //implicit creation of an array …
War das nicht std::spanals leichte Referenz für Unterregionen von std::vector/ std::array/ plain array und ähnlich konzipiert? Sollte es nicht auch Vergleichsoperatoren in seiner API enthalten, um mit ihnen konsistent zu sein? Was war der Grund für den Ausschluss? Hinweis: von Vergleichsoperatoren, ich meine , entweder den vollen Satz ( <, …
Mit der C ++ 20-Standardversion kommen Bereiche nach C ++. Meine Frage: Werden wir in der Lage sein, (vorhandene) Standardbibliothekscontainer mit einem beliebigen Bereich zu erstellen? Und was noch wichtiger ist, mit Entfernungsansichten? Zum Beispiel wird dies: #include <vector> #include <iostream> #include <ranges> int main() { auto sq = [](int …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.