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.
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 …
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. …
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 , …
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 …
Betrachten Sie den folgenden Code: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } So müssen Sie B initialisieren: B<int, 3> b = { {}, {1, 2, 3} }; Ich möchte das unnötige leere {} für die Basisklasse …
In C ++ 20 u8basieren String-Literale auf dem char8_tTyp. Sie konvertieren absichtlich nicht char const*mehr zu: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Das ultimative Ziel bei der Migration auf C ++ 20 ist natürlich, das neue Verhalten vollständig zu übernehmen (im obigen Beispiel: Ändern …
Betrachten Sie das folgende Beispiel ( Snippet (0) ): struct X { constexpr int get() const { return 0; } }; void foo(const X& x) { constexpr int i = x.get(); } int main() { foo(X{}); } Das obige Beispiel wird mit allen Versionen von g++vor g++ 10.xund nie unter …
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 …
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 …
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.