C++23
Von de.cppreference.net
<
cpp
Die aktuelle Revision des C++-Standards.
| Dieser Abschnitt ist unvollständig Grund: Überprüfen Sie, ob alle wesentlichen Funktionen erwähnt werden (anhand der Compiler-Unterstützungstabellen unten). Fügen Sie weitere Links hinzu und gruppieren Sie einige Zeilen möglicherweise neu. |
Neue Sprachfunktionen
- Neue Feature-Test-Makros für Sprachfunktionen
-
Expliziter Objektparameter, explizite Objekt-Memberfunktionen, auch bekannt als "deducing
this" (P0847R7) -
Mehrdimensionaler Index-Operator (z.B.
v[1, 3, 7] = 42;) (P2128R6) static operator[](P2589R1),static operator(), und statische Lambdas (P1169R4)auto(x)undauto{x}: decay-copy in der Sprache (P0849R8)-
Annahmen über das neue Attribut
[[assume(expression)]](P1774R8) - Attribute auf Lambda-Ausdrücken (P2173R1)
-
Optionale erweiterte Gleitkommatypen:
std::float{16|32|64|128}_t, undstd::bfloat16_t(P1467R9) -
Neue Präprozessordirektiven:
#elifdef,#elifndef(P2334R1), und #warning (P2437R1) -
Literal-Suffix '
Z'/'z' für (signed)std::size_t-Literale (P0330R8), z.B.auto ouz = 0uz; - Leerzeichen-Trimmung vor Zeilenverknüpfung. (P2223R2)
- Vereinfachte implizite Verschiebung (P2266R3)
- Verlängerung der Lebensdauer von Temporären im Initialisierer von bereichsbasierten for-Schleifen (P2718R0)
- CTAD von geerbten Konstruktoren (P2582R1)
-
Marken am Ende von zusammengesetzten Anweisungen (P2324R2), z.B.
void f(int& x){if (x)goto END;x = 42;END:}
-
Alias-Deklarationen (
using) in Init-Anweisungen (P2360R0), z.B.
for (using T = int; T e : v)/* ... */
-
Mach
()optionaler für Lambda-Ausdrücke (P1102R2) -
Verengende kontextuelle Konvertierungen zu
boolinstatic_assertundif constexpr(P1401R5) - Deklarationsreihenfolge-Layout (von nicht-statischen Klassen-Datenmembern) als verbindlich festlegen (P1847R4)
-
Textkodierungsänderungen:
- Zeichensätze und Kodierungen (P2314R4)
- Einheitliche Zeichenliteral-Kodierung (P2316R2)
-
Benannte universelle Zeichen-Escape-Sequenzen, z.B.
"\N{CAT FACE}"für"🐱"(P2071R2) -
Begrenzte Escape-Sequenzen, z.B.
"\o{7777}","\x{C0DE}","\u{CAFE}"(P2290R3) - Unterstützung für UTF-8 als portable Quellcodedatei-Kodierung (P2295R6)
- if consteval / if not consteval (P1938R3)
constexpr-Änderungen:- Nicht-literal-Variablen, Marken und
gotos inconstexpr-Funktionen (P2242R3) -
Zulassen von
staticundthread_local-Variablen in konstanten Ausdrücken inconstexpr-Funktionen (P2647R1) constexpr-Funktion benötigt nicht, dass ihr Rückgabetyp und ihre Parametertypen Literaltypen sind (P2448R2)constexpr-Funktion, für die kein Aufruf die Anforderungen eines Kern-Konstantausdrucks erfüllt (P2448R2)
- Nicht-literal-Variablen, Marken und
Neue Bibliotheksfunktionen
Neue Module
Neue Header
- < expected>
- < flat_map>
- < flat_set>
- < generator>
- < mdspan>
- < print>
- < spanstream>
- < stacktrace>
- < stdfloat>
C-Kompatibilitätsheader:
Bibliotheksfunktionen
Allgemeine Dienstprogramme
std::expected: ein neuer Vokabelltyp zur Rückgabe des Ergebnisses einer Funktion (<expected>) (P0323R12, P2549R1)std::move_only_function: ein nur-verschiebbarer Callable-Wrapper (P0288R9)std::bind_back: ein Call-Wrapper (P2387R3)std::byteswap: kehrt die Bytes um (P1272R4)std::forward_like(P2445R1)std::invoke_r: ruft ein Callable-Objekt auf (P2136R3)std::to_underlying: eine Dienstprogrammfunktion zum Abrufen des zugrunde liegenden Werts vonenum(P1682R3)std::unreachable: eine Funktion, um unerreichbaren Code zu markieren (P0627R6)-
Monadische Operationen (
transform,or_elseundand_then) fürstd::optional(P0798R8) undstd::expected(P2505R5) std::tupleist mit anderen tuple-ähnlichen Objekten kompatibel (P2165R4)-
Hinzufügen von Standardargumenten für den Weiterleitungskonstruktor von
std::pair(P2718R0) std::basic_common_reference-Spezialisierung fürstd::reference_wrapper, die Referenztypen liefert (P2655R3)
Koroutinen-Bibliothek
std::generator: synchroner Koroutinen-Generator für Bereiche (P2502R2, P2787R0)
Diagnose
- Stacktrace-Bibliothek (P0881R7)
Algorithmen, Iteratoren und Bereiche
-
Neue Bereichsadapter:
views::adjacentundviews::adjacent_transform(P2321R2)views::as_const(P2278R4)views::as_rvalue(P2446R2)views::cartesian_product(P2374R4)views::chunk_by(P2443R1)views::chunk(P2442R1)views::enumerate(P2164R9)views::join_with(P2441R2)views::repeat(P2474R2)views::slide(P2442R1)views::stride(P1899R3)views::zip,views::zip_transform(P2321R2)
ranges::range_adaptor_closure: ein Helfer für programmdefinierte Bereichsadapter-Abschlüsse (P2387R3)ranges::to: eine Bereichskonvertierungsfunktion (P1206R7)-
Neue eingeschränkte Bereichsalgorithmen:
ranges::starts_withundranges::ends_with(P1659R3)ranges::containsundranges::contains_subrange(P2302R4)ranges::find_last,ranges::find_last_ifundranges::find_last_if_not(P1223R5)ranges::iota,ranges::shift_leftundranges::shift_right: bereichifizierte Versionen von nicht eingeschränkten Algorithmen (P2440R1)ranges::fold_leftusw.: Bereichs-Faltalgorithmen (P2322R6)
-
Berichtigung von konstanten Iteratoren, Sentinelwerten und Bereichen, d.h.
ranges::cbeginund andere ähnliche Dienstprogramme, die konstante Iteratoren zurückgeben, sollten vollständig garantiert sein, selbst für flacheconst-Ansichten (wiestd::span) (P2278R4) - Explizitmachen von Multi-Param-Konstruktoren einiger Ansichten (P2711R1)
- Bereichsiteratoren als Eingaben für Nicht-Bereichsalgorithmen (P2408R5)
- Lockerung von Bereichsadaptern, um nur-verschiebbare Typen zuzulassen (P2494R2)
Container
std::mdspan: eine nicht-besitzende mehrdimensionale Array-Referenz (P0009R18, P2599R2, P2604R0, P2613R1, P2763R1)- Konstruierbarkeit und Zuweisbarkeit von Containern aus anderen kompatiblen Bereichen (P1206R7)
std::flat_set,std::flat_multiset(P1222R4),std::flat_map,std::flat_multimap(P0429R9): flache Sets und flache Maps – Containeradapter, die zugrunde liegende sortierte Direktzugriffscontainer umschließen-
Zulassen der Iteratorpaar-Konstruktion in
std::stackundstd::queue(P1425R4) - Heterogene Löschüberladungen für assoziative Container (P2077R2)
- Nicht-Deduktionskontext für Allokatoren in Container-Deduktionsleitfäden (P1518R2)
-
Anforderung, dass
std::spanundstd::basic_string_viewtrivial kopierbar sind (P2251R1)
Kompilzeit-Unterstützung
constexpr-Unterstützung für:- Metaprogrammierungs-Dienstprogramme:
Speicherverwaltung
std::out_ptrundstd::inout_ptr: Smart-Pointer-Adapter für C-Interoperabilität (P1132R7)std::allocate_at_leastundstd::allocator::allocate_at_least(P0401R6)std::start_lifetime_as: eine explizite Lebensdauerverwaltungsfunktion für implizite Lebensdauertypen (P2590R2)-
Verbot der Benutzerspezialisierung von
std::allocator_traits(P2652R2)
Zeichenketten- und Textverarbeitung
-
Neue Memberfunktionen und Änderungen an Zeichenkettentypen:
std::basic_string::containsundstd::basic_string_view::contains(P1679R3)-
Deaktivierung der Konstruktion aus
nullptrfürstd::basic_stringundstd::basic_string_view(P2166R1) -
Expliziter Bereichskonstruktor für
std::basic_string_view(P1989R2) std::basic_string::resize_and_overwrite(P1072R10)-
Rvalue-Referenz-Überladung von
std::basic_string::substrzum effizienten Slicing (P2438R2)
-
Formatierung von Bereichen, Tupeln, escaped Darstellung von Zeichen und Zeichenketten,
std::thread::idund stacktraces. (P2286R8) (P2585R1) (P2693R1)
I/O und Drucken
-
Formatierte Ausgabefunktionen
std::printundstd::printlnbereitgestellt im Header <print> (P2093R14) spanstreamBibliothek (std::span-basierter Zeichenkettenstrom) bereitgestellt im Header <spanstream> (P0448R4)-
Unterstützung des exklusiven Modus in
std::fstreams(P2467R1) -
Unterstützung des Druckens von
volatile T*:std::basic_ostream::operator<<(const volatile void*)(P1147R1)
Veraltete Funktionen
Entfernte Funktionen
- Garbage Collection-Unterstützung und erreichbarkeitsbasierte Lecksuche. (P2186R2)
-
Gemischte breite Zeichenkettenliterale Verkettung-Unterstützung, z.B.
const auto* no = u"q" U"p"ist fehlerhaft. (P2201R1) -
Nicht-kodierbare breite Zeichenliterale und Multizeichen-breite Zeichenliterale, z.B.
wchar_t x = 'db'ist fehlerhaft. (P2362R3)
Veraltete Funktionen (deprecated)
Rückgängig gemachte Veraltungen
-
Der
operator,(Komma-Operator) in Indexausdrücken (aber die Semantik wurde geändert, um überladbare mehrdimensionale Indexoperator[]zu unterstützen). -
Einige C-Header (die entsprechenden
<*.h>-Header für Kompatibilität mit C) (P2340R1)
Fehlerberichte (Defect Reports)
Compiler-Unterstützung
Hauptartikel: C++23 Compiler-Unterstützung
C++23-Kernsprachfunktionen
|
C++23-Funktion |
Papier(e) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ehemals PGI)* |
Nvidia nvcc |
Cray |
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| Literal-Suffix für (signed) size_t (FTM)* | P0330R8 | 11 | 13 | 19.43* | 13.1.6* | 6.5 | 2022.2 | 23.9 | |||
Mach () optionaler für Lambdas
|
P1102R2 | 11 | 13 | 19.44* | 13.1.6* | 6.3 | 2022.2 | 22.5 | |||
| if consteval (FTM)* | P1938R3 | 12 | 14 | 19.44* | 14.0.0* | 6.3 | 2022.2 | 24.1 | |||
| Entfernung der Garbage Collection-Unterstützung | P2186R2 | 12 | N/A | 19.30* | N/A | N/A | |||||
| Verengende kontextuelle Konvertierungen in static_assert und constexpr if | P1401R5 | 9 | 13 (teilweise)* 14 |
19.44* | 14.0.0* | 2022.2 | 20.7 | ||||
| Trimmung von Leerzeichen vor Zeilenverknüpfung | P2223R2 | Ja | Ja | 19.50* | Ja | 6.7 | 2022.2 | Ja | |||
| Deklarationsreihenfolge-Layout als verbindlich festlegen | P1847R4 | Ja | Ja | 19.30* | Ja | 2022.2 | Ja | ||||
| Entfernung der gemischten breiten Zeichenkettenliteral-Verkettung | P2201R1 | Ja | Ja | 19.44* | Ja | Ja | Ja | Ja | |||
Explizite Objekt-Memberfunktionen (deducing this) (FTM)*
|
P0847R7 | 14 | 18 19* |
19.32* (teilweise)* 19.43* |
6.3 | 22.5 | |||||
auto(x) und auto{x} (FTM)*
|
P0849R8 | 12 | 15 | 19.50* | 14.0.3* | 6.4 | 2022.2 | 23.3 | |||
#elifdef und #elifndef
|
P2334R1 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2022.2 | 23.9 | |||
| Nicht-literal-Variablen (und Marken und gotos) in constexpr-Funktionen (FTM)* | P2242R3 | 12 | 15 | 19.43* | 14.0.3* | 6.3 | 2022.2 | 22.5 | |||
| Einheitliche Zeichenliteral-Kodierung | P2316R2 | Ja | Ja | 19.30* | Ja | Ja | 2022.2 | Ja | |||
| Zeichensätze und Kodierungen | P2314R4 | 10 | Ja | 19.51* | Ja | Ja | 2022.2 | Ja | |||
Erweitern der Init-Anweisung (von for-Schleife) um Alias-Deklaration
|
zu erlauben | P2360R0 | 12 | 14 | 19.50* | 14.0.0* | |||||
| Mehrdimensionaler Index-Operator (FTM)* | P2128R6 | 12 | 15 | 19.42* | 14.0.3* | Attribute auf | |||||
| LambdasP2173R1 | 9 | 13 | 19.44* | 13.1.6* | 6.6 | 2022.2 | 22.5 | P2437R1 | |||
#warning
|
Ja* | Ja | 19.50* | 15.0.0* | 6.5 | 2023.2 | Ja | Entfernen nicht-kodierbarer breiter Zeichenliterale und Multizeichen-breiter Zeichenliterale | |||
| P2362R3 | 13 | 14 | 19.51* | 15.0.0* | 6.7 | 2023.2 | Marken am Ende von zusammengesetzten Anweisungen | ||||
| P2324R2 | 13 | 16 | 19.51* | 16.0.0* | 6.5 | 2023.2 | 23.9 | Begrenzte Escape-Sequenzen | |||
| P2290R3 | 13 | 15 | 19.50* | 15.0.0* | 6.7 | 2023.2 | Benannte universelle Zeichen-Escape-Sequenzen | ||||
| ( FTM)*P2071R2 | 13 | 15 | 19.51* | 15.0.0* | 6.7 | 2023.2 | Lockerung einiger | ||||
-Einschränkungenconstexpr ( FTM)*P2448R2
|
13 | 17 (teilweise) | 19
19.51* |
2024.0 (teilweise) | Vereinfachte implizite Verschiebung | ||||||
| ( FTM)*P2266R3 | 13 | 13 | 19.50* | 6.7 | 2022.2 | ( | |||||
static operator() FTM)*P1169R4
|
13 | 16 | 19.44* | 16.0.0* | 6.7 | 2023.2 | Anforderungen für optionale | ||||
| erweiterte GleitkommatypenP1467R9 | 13 | N/A | 6.4 | Klassentemplate-Argumentdeduktion von geerbten Konstruktoren | |||||||
| P2582R1 | 14 | 19.51* | Attribut | ||||||||
P1774R8[[assume]]
|
13 | 19 | 19.51* | Unterstützung für | |||||||
| UTF-8 als portable Quellcodedatei-KodierungP2295R6 | 13* | 15* | 19.0 (Update 2)* | *15.0.0* | 2023.2 | ( | |||||
static operator[] FTM)*P2589R1
|
13 | 16 | 19.44* | 16.0.0* | 6.7 | 2023.2 | Zulassen von | ||||
-Variablen in static constexpr-Funktionenconstexpr ( FTM)*P2647R1
|
13 | 16 | 19.51* | 16.0.0* | 2023.2 | Verlängerung der Lebensdauer von Temporären im Initialisierer von bereichsbasierten for-Schleifen | |||||
| ( FTM)*P2644R1 | P2718R0 CWG2659 15 |
19 | 19.51* | DR11: Änderung des Geltungsbereichs des | |||||||
| Lambda-Nach-Rückgabetyps P2036R3 | P2579R0 16 |
17 | 19.50* | 2023.2 | DR20: Sinnvolle Exporte | ||||||
| P2615R1 | 15 | 17 (teilweise) | 19.28 (16.8)* | DR20: | |||||||
muss nach oben propagierenconsteval ( FTM)*P2564R3
|
14 | 17 | 19.52* | 16.0.0* | 6.7 | 2024.0 | DR98: C++-Bezeichnersyntax mittels Unicode Standard Annex 31 | ||||
| P1949R7 | 12 | 14 | 19.50* | 14.0.0* | 6.4 | 2022.2 | DR11: Erlauben von doppelten | ||||
| AttributenP2156R1 | 11 | 13 | 19.50* | 13.1.6* | 6.5 | 23.9 | DR20: Anpassen des Werts des Feature-Test-Makros | ||||
P2493R0__cpp_concepts
|
12 | 19.50* | 6.4 | 23.3 | DR98: | ||||||
Lockerung der Anforderungen an , um bestehenden Praktiken zu entsprechen
wchar_tP2460R2 |
Ja | Ja | 19.44* | 15.0.0* | N/A | 2023.2 | DR11: Verwendung unbekannter Zeiger und Referenzen in konstanten Ausdrücken | ||||
| P2280R4 | 14 | 20 | *19.50* | DR20: Der Gleichheitsoperator, den Sie suchen | |||||||
| P2468R2 | 13 | 16 | 19.36* | 16.0.0* | 2023.2 | DR20: | |||||
-Kompatibilitäts- und Portabilitätskorrekturchar8_t ( FTM)*P2513R4
|
13 | 16 | 19.34* | 16.0.0* | 2023.2 | DR98/11: Klarstellung der Meldung von | |||||
Diagnosedirektiven und Erlauben von von nicht-wertabhängigen Ausdrücken in einem Template-Kontext
static_assertCWG2518 |
13 | 17 | 16.0* | (teilweise)* 19.40* C++23-Funktion |
|||||||
| Papier(e) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ehemals PGI)* |
Nvidia nvcc |
Cray |
C++23-Bibliotheksfunktionen |
C++23-Funktion
| Papier(e) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
Stacktrace-Bibliothek |
|
|---|---|---|---|---|---|---|
| ( FTM)*P0881R7 | P2301R1 12 (teilweise)* |
14* 19.34* |
stdatomic.h | |||
| < (> FTM)*P0943R6 | 12 | 15 | 19.31* | 14.0.3* | std::is_scoped_enum | |
| ( FTM)*P1048R1 | 11 | 12 | 19.30* | 13.0.0* | std::basic_string::contains() | |
| , std::basic_string_view::contains() ( FTM)*P1679R3 | 11 | 12 | 19.30* | 13.0.0* | std::to_underlying | |
| ( FTM)*P1682R3 | 11 | 13 | 19.30* | 13.1.6* | Lockerung der Anforderungen für | |
| std::chrono::time_pointP2212R2 | N/A | N/A | N/A | N/A | Bereitstellung von Größenrückmeldung | |
| in der Allokator-Schnittstelle ( FTM)*P0401R6 | 16 | 15 | 19.30* | 14.0.3* | spanstream | |
| <: Zeichenkettenstrom mit >std::span-basiertem Puffer ( FTM)*P0448R4 | 12 | 19.31* | std::out_ptr() | |||
| , std::inout_ptr() ( FTM)*P1132R8 | 14 | 19 | 19.30* | type_info::operator==() | ||
constexpr ( FTM)*P1328R1
|
12 | 17 | 19.33* | *19.34* 15.0.0* |
Iteratorpaar-Konstruktoren für | |
| std::stack und std::queue ( FTM)*P1425R4 | 12 | 14 | 19.31* | 14.0.3* | Nicht-Deduktionskontext für Allokatoren in Container-Deduktionsleitfäden | |
| P1518R2 | 12 | *13 | *19.31* | *13.1.6* | * ranges::starts_with() | |
| und ranges::ends_with() ( FTM)*P1659R3 | 16 | 17 (teilweise)* | 18
19.31* |
16.0.0* | Verbot der | |
| std::basic_string- und std::basic_string_view-Konstruktion aus nullptrP2166R1 | 12 | 13 | 19.30* | 13.1.6* | std::invoke_r() | |
| ( FTM)*P2136R3 | 12 | 17 | 19.31* | 15.0.0* | Bereichs | |
| konstruktor für std::basic_string_viewP1989R2 | 11 | 14 | 19.30* | 14.0.3* | Standard-Template-Argumente für den Weiterleitungs | |
| konstruktor von std::pairP1951R1 | 14 | 14 | 19.30* | 14.0.3* | Entfernung der Garbage Collection und erreichbarkeitsbasierten Lecksuche ( | |
| Bibliotheksunterstützung) P2186R2 | 12 | 14 | 19.30* | 14.0.3* | zip: | |
| views::zip, views::zip_transform, views::adjacent und views::adjacent_transform ( FTM)*P2321R2 | 13 | 15 (teilweise)* | 22
19.33* |
(teilweise)***19.37* 14.0.3* |
Heterogene Löschüberladungen für assoziative Container | |
| ( FTM)*P2077R3 | 16 | 19.32* | std::byteswap() | |||
| ( FTM)*P1272R4 | 12 | 14 | 19.31* | 14.0.3* | ||
P1147R1 volatile T*
|
11.3 | 14 | 19.31* | 14.0.3* | basic_string::resize_and_overwrite() | |
| ( FTM)*P1072R10 | 12 | 14 | 19.31* | 14.0.3* | Monadische Operationen für | |
| std::optional ( FTM)*P0798R8 | 12 | 14 | 19.32* | 14.0.3* | std::move_only_function | |
| ( FTM)*P0288R9 | 12 | 19.32* | Hinzufügen einer bedingten noexcept-Spezifikation zu | |||
| std::exchangeP2401R0 | 12 | 14 | 19.31* | 14.0.3* | Anforderung, dass | |
| std::spanstd::basic_string_view & TriviallyCopyable sein muss | P2251R1 | Ja | Ja | 19.31* | Ja | |
| Klarstellung des Status der „C-Header“ | P2340R1 | Ja | Ja | Ja | Ja | |
| < expected> (FTM)* | P0323R12 P2549R1 |
12 | 16 | 19.33* | 15.0.0* | |
| constexpr für <cmath> und <cstdlib> (FTM)* | P0533R9 | 4.6 (teilweise)* | ||||
| std::unreachable() (FTM)* | P0627R6 | 12 | 15 | 19.32* | 14.0.3* | |
| Veraltet: std::aligned_storage und std::aligned_union | P1413R3 | 13 | 16 | 19.33* | ||
| std::reference_constructs_from_temporary & std::reference_converts_from_temporary (FTM)* | P2255R2 | 13 (teilweise)* 14 |
21 (teilweise)* | 19.51* | ||
constexpr
std::unique_ptr (FTM)*
|
P2273R3 | 12 | 16 | 19.33* | 15.0.0* | |
| Konstruktion von Containern und Zeichenketten aus Bereichen mit ranges::to(), getaggten Konstruktoren, insert- und assign-Memberfunktionen (FTM)* (FTM)* | P1206R7 | 14 (teilweise)* 15 |
17 | 19.34* | 15.0.0* | |
| Pipe-Unterstützung für benutzerdefinierte Bereichsadapter (ranges::range_adaptor_closure, std::bind_back) (FTM)* (FTM)* | P2387R3 | 13 (teilweise)* 14 |
19 | 19.34* | ||
| ranges::iota(), ranges::shift_left() und ranges::shift_right() (FTM)* (FTM)* | P2440R1 | 13 (teilweise)* 16 |
23 | 19.34* | ||
| views::join_with (FTM)* | P2441R2 | 13 | 21 | 19.34* | ||
| views::chunk und views::slide (FTM)* (FTM)* | P2442R1 | 13 | 19.33* | |||
| views::chunk_by (FTM)* | P2443R1 | 13 | 18 | 19.33* | 16.0.0* | |
| std::mdspan: eine nicht-besitzende mehrdimensionale Array-Referenz (FTM)* | P0009R18 P2599R2 P2604R0 P2613R1 P2763R1 |
16 | 17 (teilweise)* 18 |
19.39* | 15.0.0* | |
| < flat_map> (FTM)* | P0429R9 | 15 | 20 | 19.51* | ||
| < flat_set> (FTM)* | P1222R4 | 15 | 21 | 19.51* | ||
| ranges::find_last(), ranges::find_last_if() und ranges::find_last_if_not() (FTM)* | P1223R5 | 13 | 19 | 19.36* | ||
| Freistehende Bibliothek: Einfache <Dienstprogramm>-<Bereich>- und <Iteratoren> | P1642R11 | 13* | 19.38* | |||
| views::stride (FTM)* | P1899R3 | 13 | 23 | 19.34* | ||
| Kompatibilität zwischen std::tuple und tuple-ähnlichen Objekten (FTM)* | P2165R4 | 14 | 2.9 (teilweise)* | 19.36* (teilweise)* 19.37* |
teilweise* | |
Berichtigung von konstanten Iteratoren, Sentinelwerten und Bereichen. views::as_const (FTM)*
|
P2278R4 | 13 | 19.35* (teilweise)* 19.36* |
|||
| Formatierung von Bereichen (FTM)* | P2286R8 | 15 | 16 | 19.37*(teilweise)* 19.39*(teilweise)* 19.41*(teilweise)* 19.42* |
15.0.0* | |
| Verbesserung der Standardcontainer-formatierung (FTM)* | P2585R1 | 15 | 16 (teilweise)* 17 |
19.42* | 15.0.0* | |
| Formatierte Ausgabebibliothek <print> (FTM)* | P2093R14 P2539R4 |
14 | 17 (teilweise)* 18 |
19.37* | 15.0.0** 16.0.0* | |
| Formatierung von std::thread::id und std::stacktrace (FTM)* | P2693R1 | 14 | 17 (teilweise)* | 19.38* | 15.0.0* | |
constexpr
für die ganzzahligen Überladungen von std::to_chars() und std::from_chars() (FTM)*
|
P2291R3 | 13 | 16 | 19.34* | 15.0.0* | |
| ranges::contains() und ranges::contains_subrange() (FTM)* | P2302R4 | 13 | 19 | 19.34* | 16.0.0** | |
| Bereichs-Faltalgorithmen (FTM)* | P2322R6 | 13 | 23 18 (teilweise)* |
19.35* | ||
| views::cartesian_product (FTM)* | P2374R4 P2540R1 |
13 | 19.37* | |||
| Hinzufügen von Unterstützung für nur-verschiebbare Typen für Vergleichskonzepte (equality_comparable, totally_ordered, three_way_comparable) (FTM)* | P2404R3 | 16 | 22 | 19.36* | ||
| Bereichsiteratoren als Eingaben für Nicht-Bereichsalgorithmen (FTM)* | P2408R5 | 16 | 19.34* | |||
constexpr
std::bitset (FTM)*
|
P2417R2 | 13 | 16 | 19.34* | 15.0.0* | |
basic_string::substr() &&
|
P2438R2 | 16 | 16 | 19.34* | 15.0.0* | |
| views::as_rvalue (FTM)* | P2446R2 | 13 | 16 | 19.34* | 15.0.0* | |
| Standardbibliotheksmodule (FTM)* | P2465R3 | 15* | 17 (teilweise)* | 19.35* (teilweise)* 19.36* |
||
| std::forward_like() (FTM)* | P2445R1 | 14 | 16 | 19.34* | 15.0.0* | |
| Unterstützung des exklusiven Modus für std::fstream (FTM)* | P2467R1 | 12 | 18 | 19.36* | 16.0.0* | |
| views::repeat (FTM)* | P2474R2 | 13 | 17 | 19.36* | 15.0.0* | |
| Lockerung von Bereichsadaptern, um nur-verschiebbare Typen zuzulassen (FTM)* | P2494R2 | 14 | 17 | 19.34* | 15.0.0* | |
| Der Bereichskonstruktor von std::basic_string_view | sollte explizit sein | P2499R0 | 12.2 | 16 | 19.34* | |
| 15.0.0* std::generator : synchroner Koroutinengenerator für Bereiche (FTM) | * P2502R2 |
P2787R0 | 14 | |||
| 19.43* Hinzufügen einer bedingten noexcept-Spezifikation zu | std::apply | P2517R1 | 10 | 18 | 19.34* | |
| 16.0.0* Explizite Lebensdauerverwaltung (std::start_lifetime_as ) (FTM) | * P2590R2 |
P2679R2 | 16 | |||
| 19.51* Klarstellung der Handhabung von Kodierungen bei der lokalisierten Formatierung von Chrono-Typen (FTM) | * | P2419R2 | 15*19.34* | |||
| * std::move_iterator sollte nicht immer input_iterator sein (FTM | ) | * | P2520R0 | 12.3*17* | 19.34* | |
| *15.0.0* Aktualisierung der Deduktionsleitfäden für | explizite Objektparameter | -Call-Operatoren | LWG3617 | |||
14
static operator()
|
19.34* | Aktualisierung der Deduktionsleitfäden für | P1169R4 | 13 | 16 | |
| 19.39*15.0.0* | Standardnamen und Bibliotheksunterstützung für | erweiterte Gleitkommatypen | P1467R913 | |||
| 19.37** Monadische Operationen für std::expected (FTM | ) | * | P2505R5 | 13 | 17 | |
| 19.36* 15.0.0* views::enumerate (FTM | ) | * | P2164R9 | 13 | ||
| 23 19.37* std::is_implicit_lifetime (FTM | ) | * | P2674R1 | 16 | ||
| 20 19.51* std::common_reference_t von std::reference_wrapper sollte ein Referenztyp sein (FTM )* (FTM | ) | * | P2655R3 | 16 | ||
| 21*19.37* | Verbot der Benutzerspezialisierung von | std::allocator_traits | P2652R2 | |||
| 19 19.37* | Veraltet: | std::numeric_limits::has_denorm | P2614R2 | 17 | 18 | |
| 19.37*16.0.0* Explizitmachen von Multi-Param-Konstruktoren von Ansichten | P2711R1 | 16 | 21 17 (teilweise)* |
19.36** | 15.0.0* | |
| DR20: Lockerung der Bereiche ein wenig (FTM)* | P2609R3 | 15 | 20 | 19.37* | ||
| DR20: Stashing Stashing Iterators For Proper Flattening | P2770R0 | 14 | 21 18 (teilweise) |
19.37* | ||
| DR17: std::visit() für Klassen, die von std::variant abgeleitet sind (FTM)* | P2162R2 | 11.3 | 13 | 19.20** 19.30* |
13.1.6* | |
| DR20: Bedingt geborgte Bereiche | P2017R1 | 11 | 16 | 19.30* | ||
| DR20: Reparatur von Eingabebereichsadaptern und std::counted_iterator | P2259R1 | 12 | 19.30*(teilweise)* 19.31* |
|||
| DR20: views::join sollte alle Ansichten von Bereichen zusammenführen | P2328R1 | 11.2 | 15 | 19.30* | 14.0.3* | |
| DR20: view erfordert nicht default_initializable (FTM)* | P2325R3 | 11.3 | 16 | 19.30* | 15.0.0* | |
| DR20: Bereichsadapter-Objekte binden Argumente nach Wert | P2281R1 | 11 | 14 | 19.29 (16.10)* (teilweise)* 19.31* |
14.0.3* | |
| DR20: constexpr für std::optional und std::variant (FTM)* (FTM)* | P2231R1 | 11.3 (teilweise)* 12 |
13 (teilweise)* 19 |
19.31* | 13.1.6* (teilweise) | |
| DR20: views::lazy_split und neu gestaltetes views::split | P2210R2 | 12 | 16 | 19.31* | 15.0.0* | |
| DR20: Behebung von ranges::istream_view | P2432R1 | 12 | 16 | 19.31* | 15.0.0* | |
| DR20: Ansicht mit Eigentum (FTM)* | P2415R2 | 12 | 14 | 19.31* | 14.0.3* | |
| DR20: Behebung der Lokalisierungsbehandlung in Chrono-Formatieren (FTM)* | P2372R3 P2418R2 |
13 | 19.31* | |||
| DR20: Bereinigung von Integer-Klassentypen | P2393R1 | 19.32* | ||||
| DR20: Compile-Zeit-Formatzeichenfolgenprüfungen; Reduzierung der Binary-Code-Größe der std::format()-Familie (FTM)* | P2216R3 | 13 | 14 (teilweise)* 15 |
19.32* | 14.0.3* | |
| DR20: Hinzufügen von Unterstützung für nicht-const-formattierbare Typen zu std::format | P2418R2 | 13 | 15 | 19.32* | 14.0.3* | |
| DR20: std::basic_format_string | P2508R1 | 13 | 15 | 19.35* | 14.0.3* | |
| DR20: Poison Pills sind zu giftig (FTM)* | P2602R2 | 14 | 19 | 19.36* | ||
| DR20: std::format-Füllzeichenerlaubnisse | P2572R1 | 14 | 17 | 19.37* | ||
| DR20: Verbesserung der Breitenschätzung von std::format | P2675R1 | 14 | 17 | 19.38* | ||
| DR20: Phasenabschlussgarantien von std::barrier ( FTM)*P2588R3 | 19.28 (16.8)* | *19.36* C++23-Funktion |
||||
| Papier(e) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
* |
- Bewegen Sie die Maus über eine mit dem Stern * markierte Zelle, um zusätzliche Popup-Notizen anzuzeigen.
DRnn - die Zahl nn nach „DR“ gibt die Ziel-C++-Revision an, auf die der Fehlerbericht angewendet wird, z.B. DR20 → C++20.
Externe Links
| 1. | C++23 - Wikipedia |