C++26
Die nächste Generation des C++-Standards.
Der aktuelle IS-Zeitplan für C++26: P1000R6 (2024-05-14).
| Dieser Abschnitt ist unvollständig |
Inhaltsverzeichnis |
Neue Sprachfunktionen
Neue Bibliotheksfunktionen
Neue Module
Neue Header
- <contracts>
- <debugging>
- <hazard_pointer>
- <hive>
- <inplace_vector>
- <linalg>
- <rcu>
- <simd>
- <text_encoding>
C-Kompatibilitätsheader:
Veraltete Funktionen
Entfernte Funktionen
| Dieser Abschnitt ist unvollständig |
Veraltete Funktionen
| Dieser Abschnitt ist unvollständig |
Fehlerberichte
Compiler-Unterstützung
Hauptartikel: C++26 compiler support
C++26 Kernsprachfunktionen
|
C++26-Funktion
|
Dokument(e)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| DR98: Entfernung von undefiniertem Verhalten beim Lexen | P2621R3 | Ja | 3.3 | 16.0.0* | |||||||
| DR98: Nicht kodierbare String-Literale als fehlerhaft machen | P1854R4 | 14 | 14 | 16.0.0* | |||||||
| Nicht ausgewertete Zeichenketten | P2361R6 | 14 |
17 (teilweise)*
18 |
16.0.0* | |||||||
Hinzufügen von
@
,
$
und
`
zum
Basiszeichensatz
|
P2558R2 | 15 | Ja | 16.0.0* | |||||||
| constexpr Konvertierung von void * ( FTM ) * | P2738R1 | 14 | 17 | ||||||||
| DR20: Zur Ignorierbarkeit von Standardattributen | P2552R3 | 15 | Ja | ||||||||
| DR11: Statischer Speicher für Initialisierer mit geschweiften Klammern | P2752R3 | 14 | |||||||||
| Benutzerdefinierte static_assert Nachrichten ( FTM ) * | P2741R3 | 14 | 17 | ||||||||
| Platzhaltervariablen ohne Namen ( FTM ) * | P2169R4 | 14 | 18 | ||||||||
| Pack-Indexierung ( FTM ) * | P2662R3 | 15 | 19 | ||||||||
| Entfernung veralteter arithmetischer Konvertierungen bei Enumerationen | P2864R2 | 14 | 18 | ||||||||
| DR11/20: Template-Parameter-Initialisierung | P2308R1 | 9 | 18 | ||||||||
| Verbiete das Binden einer zurückgegebenen Referenz an einen temporary | P2748R5 | 14 | 19 | ||||||||
| Attribute für structured bindings ( FTM ) * | P0609R3 | 15 | 19 | ||||||||
Fehlerhaftes Verhalten für
uninitialized reads
,
[[
indeterminate
]]
Attribut
|
P2795R5 | ||||||||||
| = delete ( "reason" ) ; ( FTM ) * | P2573R2 | 15 | 19 | ||||||||
| Variadic Freunde ( FTM ) * | P2893R3 | 15 | 20 | ||||||||
| DR98: Klärung der Regeln für Klammerauslassung bei aggregate initialization | P3106R1 | Ja | 17 | ||||||||
| DR20: Moduldeklarationen als Makros verbieten | P3034R1 | 15 | |||||||||
| DR11: Triviale Endlosschleifen sind kein undefiniertes Verhalten | P2809R3 | 14 | 19 | ||||||||
| constexpr placement new ( FTM ) * ( FTM ) * | P2747R2 | 15 | 20 | ||||||||
| Strukturierte Bindings -Deklaration als Bedingung ( FTM ) * | P0963R3 | 15 |
6
(teilweise)*
21 |
||||||||
| Reihenfolge von Constraints mit Fold-Ausdrücken ( FTM ) * | P2963R3 | 19 | |||||||||
| Das Löschen eines Zeigers auf einen unvollständigen Typ sollte ungültig sein | P3144R2 | 15 | 19 | 6.7 | |||||||
| Strukturierte Bindungen können einen Pack einführen ( FTM ) * | P1061R10 | 21 | |||||||||
| constexpr strukturierte Bindungen und Referenzen auf constexpr Variablen | P2686R5 | 6.7 | |||||||||
| constexpr Ausnahmen : [1] , [2] ( FTM ) * | P3068R6 | ||||||||||
| Oxford variadic comma | P3176R1 | 15 | 20 | ||||||||
| Entfernung veralteter Array-Vergleiche | P2865R6 | 15 | 20 | ||||||||
#embed
(
FTM
)
*
|
P1967R14 | 15 | 19 * | ||||||||
| Konzept- und Variablen-Template-Template-Parameter ( FTM ) * | P2841R7 | ||||||||||
| Triviale Relokationsfähigkeit ( FTM ) * | P2786R13 | 21 * | |||||||||
| Triviale Unions ( FTM ) * | P3074R7 | ||||||||||
| Beobachtbare Kontrollpunkte | P1494R5 | ||||||||||
| Verträge ( FTM ) * | P2900R14 | ||||||||||
|
C++26-Funktion |
Paper(s) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
C++26-Bibliotheksfunktionen
|
C++26-Funktion
|
Paper(s)
|
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
|
|---|---|---|---|---|---|---|
| Testen auf Erfolg oder Misserfolg von <charconv> Funktionen ( FTM ) * | P2497R0 | 14 | 18 | 16.0.0* | ||
| std::text_encoding : Textkodierungen-Identifikation ( FTM ) * |
P1885R12
P2862R1 |
14 | ||||
| Arithmetische Überladungen von std::to_string und std::to_wstring verwenden std::format ( FTM ) * | P2587R3 | 14 | ||||
| Typprüfung von Format-Argumenten ( FTM ) * | P2757R3 | 15 | ||||
| Formatierung von Zeigern ( FTM ) * | P2510R3 | 14 * | 17 * | 19.40* * | ||
| Hash-Unterstützung für std::chrono Wertklassen ( FTM ) * | P2592R3 | |||||
| <rcu> : Read-Copy Update ( FTM ) * | P2545R4 | |||||
| <hazard_pointer> : Hazard-Pointer ( FTM ) * | P2530R3 | |||||
| ADL-sicher std::projected | P2538R1 | 14 * | 18 * | 19.38* * | 16.0.0* | |
| constexpr stabile Sortierung ( FTM ) * | P2562R1 | 15 | 21 | |||
| Mitgliedsfunktion std::basic_format_arg::visit() ( FTM ) * | P2637R3 | 15 | 19 | |||
| Member std::variant::visit() ( FTM ) * | P2637R3 | 15 | 18 | |||
| std::is_within_lifetime ( FTM ) * | P2641R4 | |||||
| Erweiterung assoziativer Container mit den verbleibenden heterogenen Überladungen ( FTM ) * | P2363R5 | |||||
| Ermöglicht die Verwendung von std::weak_ptr als Schlüssel in ungeordneten assoziativen Containern ( FTM ) * | P1901R2 | |||||
| Native Handles in Dateiströmen ( FTM ) * | P1759R6 | 14 | 18 | 16.0.0* | ||
| Verbindung von String-Streams mit std::string_view ( FTM ) * | P2495R3 | 19 | ||||
| Interaktion zwischen std::bitset und std::string_view ( FTM ) * | P2697R1 | 18 | 16.0.0* | |||
| Mehr constexpr für <cmath> und <complex> ( FTM ) * ( FTM ) * | P1383R2 | 4.6 (teilweise)* | ||||
| Hinzufügen der neuen SI-Präfixe von 2022 für Ratios: std::quecto , std::ronto , std::ronna , und std::quetta ( FTM ) * | P2734R0 | 14 | 17 * | |||
| std::function_ref : typlöschte aufrufbare Referenz ( FTM ) * | P0792R14 | |||||
| std::copyable_function ( FTM ) * | P2548R6 | 16 | ||||
| std::bind_front , std::bind_back , und std::not_fn für NTTP-Aufrufbare ( FTM ) * ( FTM ) * ( FTM ) * | P2714R1 | |||||
| std::submdspan() ( FTM ) * |
P2630R4
P3355R1 |
|||||
| Freestanding-Sprache: Optional ::operator new | P2013R5 | N/A | ||||
| Freestanding std::char_traits , std::errc und Einrichtungen in: <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2338R4 | N/A | ||||
| Weitere freestanding Einrichtungen ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2198R7 | N/A | ||||
| Sättigungsarithmetik ( FTM ) * | P0543R3 | 14 | 18 | 16.0.0* | ||
| <debugging> : Debugging-Unterstützung ( FTM ) * |
P2546R5
P2810R4 |
|||||
| <linalg> : Eine freie Funktionsschnittstelle für lineare Algebra basierend auf BLAS ( FTM ) * |
P1673R13
P3050R2 P3222R0 |
|||||
| Benutzerfreundliche Gestaltung der assert() Makro | P2264R7 | |||||
| Laufzeit-Formatstrings ( FTM ) * | P2918R2 | 14 | 18 | 16.0.0* | ||
| std::span über eine Initialisierungsliste ( FTM ) * | P2447R6 | 15 | 18 | 16.0.0* | ||
| std::span::at() ( FTM ) * | P2821R5 | 14 | 18 | 16.0.0* | ||
| Tupelprotokoll zu std::complex hinzugefügt ( FTM ) * | P2819R2 | 15 | 19 | |||
| Eine neue Spezifikation für std::generate_canonical | P0952R2 | 19.42* | ||||
| Entfernung des veralteten Typedefs std::allocator::is_always_equal | P2868R3 | 15 | 18 | 16.0.0* | ||
| Entfernung der Funktionsüberladung von std::basic_string::reserve() ohne Argument | P2870R3 | 18 | 16.0.0* | |||
| Entfernung veralteter Unicode-Konvertierungsfacetten ( <codecvt> ) | P2871R3 | 18 | 16.0.0* | |||
| Freestanding: Entfernung von std::strtok ( FTM ) * | P2937R0 | 14 | 19.40* | |||
| Freestanding-Bibliothek: Teilklassen ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2407R5 | 14 | 19.42* | |||
| Freestanding-Bibliothek: std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P2833R2 | 14 | 19.42* | |||
| DR23: std::basic_const_iterator sollte der Konvertierbarkeit seines zugrundeliegenden Typs folgen ( FTM ) * |
P2836R1
P2950R0 |
14 | 19.40* | |||
| DR20: std::make_format_args akzeptiert nun nur Lvalue-Referenzen anstelle von Forwarding-Referenzen | P2905R2 | 14 | 18 | 19.40* | 16.0.0* | |
| DR20: Korrektur der Formatierung von Codeeinheiten als Ganzzahlen ( FTM ) * | P2909R4 | 13.3 | 18 | 19.40* | 16.0.0* | |
| views::concat ( FTM ) * | P2542R8 | 15 | ||||
| Verkettung von Strings und String-Views ( FTM ) * | P2591R5 | 15 | 19 | |||
| Ermöglicht die Listeninitialisierung für Algorithmen ( FTM ) * |
P2248R8
P3217R0 |
15 | ||||
| std::ranges::generate_random ( FTM ) * | P1068R11 | |||||
| Vergleiche für std::reference_wrapper , und Constraints für Vergleiche von std::pair , std::tuple , std::optional , und std::variant ( FTM ) * ( FTM ) * | P2944R3 | 14 | 19 (teilweise) * | |||
| Gepolsterte mdspan-Layouts ( FTM ) * | P2642R6 | |||||
| Neue CTAD für std::span und std::mdspan mit integralen Konstanten | P3029R1 | 19 | ||||
| Atomare Maximum- und Minimum-Operationen ( FTM ) * | P0493R5 | |||||
| std::formatter<std::filesystem::path> ( FTM ) * | P2845R8 | |||||
| Leerzeilen drucken mit std::println() ( FTM ) * | P3142R0 | 14 * | 19 * | 19.41* * | ||
| Entdeprekarisieren std::polymorphic_allocator::destroy | P2875R4 | 15 | 19.41* | |||
| Entfernung veralteter Strstreams | P2867R2 | 19 | ||||
| Entfernung veralteter std::shared_ptr Atomic Access APIs | P2869R4 | |||||
| Entfernung von std::wstring_convert | P2872R3 | 19 | ||||
| DR23: Ermöglicht eine effiziente Implementierung von std::print ( FTM ) * |
P3107R5
P3235R3 |
19.43* | ||||
| Ausführungssteuerungsbibliothek ( FTM ) * |
P2300R10
P3396R0 |
|||||
| std::inplace_vector : dynamisch vergrößerbares Vektor mit festgelegter Kapazität ( FTM ) * | P0843R14 | |||||
| std::philox_engine : zählerbasierte Zufallszahlen-Engine ( FTM ) * | P2075R6 | |||||
| std::optional Bereichsunterstützung ( FTM ) * | P3168R2 | |||||
| std::is_virtual_base_of : Typetrait zur Erkennung virtueller Basisklassen ( FTM ) * | P2985R0 | 15 | 20 | |||
| std::dims für std::mdspan ( FTM ) * | P2389R2 | 19 | ||||
| DR11: Formale Spezifikation des Typs von std::ignore | P2968R2 | 15 | 19 | 19.42* | ||
| DR20: Entfernen der Common-Reference-Anforderung von den indirekt aufrufbaren Konzepten ( FTM ) * | P2997R1 | 15 | 19 | 19.42* | ||
| Veraltung von std::is_trivial und std::is_trivial_v | P3247R2 | 15 | 21 | |||
| DR20: Algorithmus-Funktionsobjekte | P3136R1 | Ja | 14 | 19.39* | 14.0.3* | |
| std::ranges::cache_latest_view ( FTM ) * | P3138R5 | 15 | ||||
| Einschränkung der std::expected Gleichheitsoperatoren ( FTM ) * | P3379R0 | 15 | ||||
| std::aligned_accessor : ein std::mdspan -Zugriffsobjekt, das Zeiger-Überausrichtung ausdrückt ( FTM ) * | P2897R7 | 21 | ||||
| std::is_sufficiently_aligned : prüft die Ausrichtungs-Vorbedingung eines Zeigers ( FTM ) * | P2897R7 | 21 | ||||
| std::atomic_ref::address() ( FTM ) * | P2835R7 | |||||
| DR11/20: cv-qualifizierte Typen in std::atomic und std::atomic_ref | P3323R1 | 19.44* | ||||
| constexpr std::atomic und std::atomic_ref ( FTM ) * | P3309R3 | |||||
| constexpr für spezialisierte Speicheralgorithmen ( FTM ) * |
P3508R0
P3369R0 |
15 | ||||
| <stdbit.h> und <stdckdint.h> | P3370R1 | 15 | ||||
| <simd> : datenparallele Typen ( FTM ) * ( FTM ) * |
P1928R15
P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 |
|||||
| Ein Dienstprogramm zur Erstellung von Ausführungsumgebungen | P3325R5 | |||||
| constexpr für Ausnahmetypen, z.B. std::bad_alloc , std::bad_cast usw. ( FTM ) * |
P3068R6
P3378R2 |
|||||
| Triviale Relokationsmerkmale und Operationen ( FTM ) * | P2786R13 | |||||
Entschärfen und veraltet erklären
std::memory_order::consume
|
P3475R1 | |||||
| Füge std::monostate in <utility> ein | P0472R3 | 15 | 21 | 19.50* | ||
| std::indirect ( FTM ) * | P3019R14 | |||||
| std::polymorphic ( FTM ) * | P3019R14 | |||||
|
Weitere
constexpr
für Container und Container-Adapter:
std::deque
,
std::flat_map
,
std::flat_multimap
,
std::flat_set
,
std::flat_multiset
,
std::forward_list
,
std::list
,
std::map
,
std::multimap
,
std::queue
,
std::priority_queue
,
std::set
,
std::multiset
,
std::stack
,
std::unordered_map
,
std::unordered_multimap
,
std::unordered_set
, und
std::unordered_multiset
|
P3372R3 | |||||
| constexpr std::inplace_vector für nicht-triviale Typen ( FTM ) * | P3074R7 | |||||
| std::ranges::to_input_view ( FTM ) * | P3137R3 | 15 | ||||
| std::ranges::approximately_sized_range und std::ranges::reserve_hint ( FTM ) * | P2846R6 | |||||
| <hive> : Ein bucket-basierter Container, der Speicherorte gelöschter Elemente wiederverwendet ( FTM ) * | P0447R28 | |||||
| <contracts> : Unterstützung für die Behandlung von Vertragsverletzungen ( FTM ) * | P2900R14 | |||||
| Standardbibliothek-Härtung ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * | P3471R4 | 15 (teilweise)* | 19.44* (teilweise)* | |||
|
Freestanding-Bibliothek:
<algorithm>
,
<numeric>
,
<random>
, (
<execution>
,
<memory>
)
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * |
P2976R1 | |||||
| DR20: Konvertierung zusammenhängender Iteratoren in Zeiger | P3349R0 | 15 | ||||
|
C++26-Funktion |
Papier(e) |
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
*
- fahren Sie mit der Maus über eine mit dem Stern markierte Zelle
*
, um zusätzliche Pop-up-Notizen zu sehen.
DR
nn
- die Zahl
nn
nach "DR" bezeichnet die C++-Revision, auf die der Defektbericht angewendet wird, z.B. DR20 → C++20.
Externe Links
| 1. | C++26 - Wikipedia |