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.



3
Was ist der Operator <=> in C ++?
Während ich versuche , darüber zu erfahren , C ++ Operatoren, stieß ich auf einem seltsamen Vergleichsoperator auf cppreference.com , * in einer Tabelle , die wie folgt aussah: "Nun, wenn dies in C ++ übliche Operatoren sind, lerne ich sie besser", dachte ich. Aber alle meine Versuche, dieses Rätsel …

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&lt;typename T&gt; …
161 c++  c++-concepts  c++20 



3
Was sind Coroutinen in C ++ 20?
Was sind Coroutinen in c ++ 20? Inwiefern unterscheidet es sich von "Parallelism2" oder / und "Concurrency2" (siehe Bild unten)? Das folgende Bild stammt von ISOCPP. https://isocpp.org/files/img/wg21-timeline-2017-03.png
104 c++  coroutine  c++20 

2
Warum wird std :: ssize () in C ++ 20 eingeführt?
C ++ 20 führte die std::ssize()freie Funktion wie folgt ein: template &lt;class C&gt; constexpr auto ssize(const C&amp; c) -&gt; std::common_type_t&lt;std::ptrdiff_t, std::make_signed_t&lt;decltype(c.size())&gt;&gt;; Eine mögliche Implementierung scheint zu verwenden static_cast, um den Rückgabewert der size()Mitgliedsfunktion von cl ass C in sein vorzeichenbehaftetes Gegenstück umzuwandeln . Da die size()Mitgliedsfunktion von C immer nicht …
99 c++  stl  unsigned  signed  c++20 



2
Warum muss ich in C ++ 20 nicht "Typname" vor einem abhängigen Typ angeben?
Dieses Codebit wurde in C ++ 20 (mit gcc 10.1) kompiliert, ohne das typenameSchlüsselwort vor dem abhängigen Typ zu verwenden std::vector&lt;T&gt;::iterator. Warum kompiliert es? #include &lt;vector&gt; template&lt;typename T&gt; std::vector&lt;T&gt;::iterator // Why does this not require "typename" before it? f() { return {}; } int main() { auto fptr = &amp;f&lt;int&gt;; …

3
Der Gleichheitsoperator wird für eine Implementierung eines benutzerdefinierten Raumschiffoperators in C ++ 20 nicht definiert
Ich habe ein seltsames Verhalten mit dem neuen Raumschiffoperator &lt;=&gt;in C ++ 20. Ich verwende den Visual Studio 2019-Compiler mit /std:c++latest. Dieser Code wird wie erwartet gut kompiliert: #include &lt;compare&gt; struct X { int Dummy = 0; auto operator&lt;=&gt;(const X&amp;) const = default; // Default implementation }; int main() { …

2
Warum wird operator! = In C ++ 20 für viele Standardbibliothekstypen entfernt?
Nach cppreference , std::type_info::operator!=wird mit C ++ entfernt 20 jedoch std::type_info::operator==bleibt offenbar. Was ist der Grund dafür? Ich könnte zustimmen, dass ein Vergleich auf Ungleichheit bedeutungslos ist, aber ein Vergleich auf Gleichheit wäre genauso bedeutungslos, nicht wahr? In ähnlicher Weise werden operator!=von vielen anderen Standardbibliothekstypen, einschließlich Containern wie std::unordered_map::operator!=und std::unordered_set::operator!=in …


2
Ausgewiesene Initialisierer in C ++ 20
Ich habe eine Frage zu einer der C ++ 20-Funktionen, die als Initialisierer bezeichnet werden (weitere Informationen zu dieser Funktion hier ). #include &lt;iostream&gt; constexpr unsigned DEFAULT_SALARY {10000}; struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : Person { unsigned salary{DEFAULT_SALARY}; }; int main() { std::cout …

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.