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 C ++ 20 wurde explizit (bool) eingeführt, das beim Kompilieren bedingt auswählt, ob ein Konstruktor explizit gemacht wird oder nicht. Unten ist ein Beispiel, das ich hier gefunden habe . struct foo { // Specify non-integral types (strings, floats, etc.) require explicit construction. template <typename T> explicit(!std::is_integral_v<T>) foo(T) {} …
Betrachten Sie die Header-Datei: class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; oder alternativ: class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; }; inline …
In C ++ 20 kann der autoFunktionsparametertyp verwendet werden. Ermöglicht es auch die Verwendung autoeines Platzhalters als Vorlagenargument (nicht ähnlich, aber in gewisser Weise im Sinne der C ++ 17-Vorlage <auto> ) für den Funktionsparametertyp? Also der folgende Code vor C ++ 20: template<typename First, typename Second> void printPair(const std::pair<First, …
[basic.scope.pdecl] / 1 des C ++ 20-Standardentwurfs enthielt das folgende (nicht normative) Beispiel in einer Notiz (Teilzitat vor dem Zusammenführen der Pull-Anforderung 3580 , siehe Antwort auf diese Frage): unsigned char x = x; [...] x wird mit einem eigenen (unbestimmten) Wert initialisiert. Hat dies tatsächlich ein genau definiertes Verhalten …
In C ++ 20 ist das Konzept von POD veraltet, angeblich weil es ein bedeutungsloses zusammengesetztes Merkmal von Trivialität und Standardlayout ist. Die Definition von POD im C ++ 20-Entwurf ist jedoch nicht genau "sowohl trivial als auch Standardlayout". es ist eigentlich: Eine POD-Klasse ist eine Klasse, die sowohl eine …
https://www.timeanddate.com/date/weekday.html berechnet verschiedene Fakten zu einem Tag des Jahres, zum Beispiel: Wie können diese Zahlen bei einem beliebigen Datum mit der C ++ 20-Chronospezifikation berechnet werden ?
Als ich mir die mögliche Implementierung des same_as-Konzepts unter https://en.cppreference.com/w/cpp/concepts/same_as ansah, bemerkte ich, dass etwas Seltsames passiert. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; Die erste Frage ist, …
Gibt es eine Möglichkeit, in C ++ 11 zu überprüfen, ob eine Aufzählung fortlaufend ist ? Es ist voll gültig, eine Aufzählung anzugeben, die nicht sind. Gibt es möglicherweise eine Funktion wie ein Typmerkmal in C ++ 14, C ++ 17 oder C ++ 20, um zu überprüfen, ob die …
C ++ verwendet den streamoffTyp, um einen Offset innerhalb eines (Datei-) Streams darzustellen, und ist in [stream.types] wie folgt definiert: using streamoff = implementation-defined ; Der Typ Streamoff ist ein Synonym für einen der vorzeichenbehafteten integralen Grundtypen mit ausreichender Größe, um die maximal mögliche Dateigröße für das Betriebssystem darzustellen. 287) …
Laut cppreference sind die meisten Verwendungen des volatileSchlüsselworts in C ++ 20 veraltet. Was ist der Nachteil von volatile? Und was ist die alternative Lösung, wenn sie nicht verwendet wird volatile?
Ich spiele mit [[no_unique_address]]in herum c++20. Im Beispiel für cppreference haben wir einen leeren Typ Emptyund TypZ struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; Anscheinend muss die Größe von Zmindestens so sein, 2weil die Typen von e1und gleich e2sind. Allerdings möchte …
Konstante Ausdrücke in C ++ haben eine sehr nette Eigenschaft: Ihre Auswertung kann kein undefiniertes Verhalten haben ( 7.7.4.7 ): Ein Ausdruck e ist ein konstanter Kernausdruck, es sei denn, die Auswertung von e nach den Regeln der abstrakten Maschine ([intro.execution]) würde eine der folgenden auswerten: ... eine Operation, die …
In C ++ 20 std::swapwird eine constexprFunktion. Ich weiß, dass die Standardbibliothek beim Markieren von Dingen wirklich hinter der Sprache zurückgeblieben ist constexpr, aber bis 2017 <algorithm>war sie ziemlich genau wie eine Reihe anderer Dinge. Noch std::swapnicht. Ich erinnere mich vage an einen seltsamen Sprachfehler, der diese Markierung verhindert, aber …
Von cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Mit libc++scheint es , die unterstreicht Speicherung std::chrono::yearsheißt , shortdie signiert ist 16 Bit . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Gibt es einen Tippfehler bei …
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.