Als «c++20» getaggte Fragen

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.

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 …

1
Ist es UB, eine Elementfunktionskoroutine eines Objekts wieder aufzunehmen, dessen Lebensdauer abgelaufen ist?
Diese Frage ergibt sich aus diesem Kommentar: Erklärung der Lambda-Lebensdauer für C ++ 20-Coroutinen zu diesem Beispiel: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } Die Frage ist also, ob die Ausführung der von zurückgegebenen Coroutine zu fooUB führen würde. …

1
Nicht spezifizierte implizite Objekterstellung
Da P0593 die implizite Erstellung von Objekten für die Objektmanipulation auf niedriger Ebene akzeptiert wurde, können Objekte jetzt implizit in C ++ 20 erstellt werden. Insbesondere ermöglicht der durch den Vorschlag eingeführte Wortlaut, dass bestimmte Vorgänge (z. B. std::malloc) automatisch die Lebensdauer von Objekten bestimmter Typen, sogenannte implizite Lebensdauer-Typen , …

1
Wie soll shift_right () in C ++ 20 implementiert werden?
In C ++ 20 <algorithm>erhält der Header zwei neue Algorithmen: shift_left()undshift_right() . Beide akzeptieren jeden LegacyForwardIterator. Denn shift_left()es wird spezifiziert, dass "die Bewegungen in aufsteigender Reihenfolge von ibeginnend ausgeführt werden ​0"; denn shift_right()es wird angegeben, dass "wenn ForwardItdie LegacyBidirectionalIterator-Anforderungen erfüllt sind, die Bewegungen in absteigender Reihenfolge von ibeginnend ausgeführt werden …




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 …

2
Wie wird std :: atomic_ref für nichtatomare Typen implementiert?
Ich frage mich, wie std::atomic_refeffizient (eine std::mutexpro Objekt) für nichtatomare Objekte implementiert werden kann , da die folgende Eigenschaft ziemlich schwer durchzusetzen scheint: Atomoperationen, die über eine atomare Referenz auf ein Objekt angewendet werden, sind atomar in Bezug auf atomare Operationen, die über eine andere atomare Referenz angewendet werden, die …
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.