Namespaces
Variants

C++26

Von de.cppreference.net
< cpp

Die nächste Generation des C++-Standards.

Der aktuelle IS-Zeitplan für C++26: P1000R6 (2024-05-14).

Neue Sprachfeatures

Neue Bibliotheksfeatures

Neue Module

Neue Header

C-Kompatibilitäts-Header:

Veraltete Features

Entfernte Features

Als veraltet markierte Features

Fehlerberichte

Compiler-Unterstützung

Hauptartikel: C++26 Compiler-Unterstützung

C++26 Kernsprachenfeatures

C++26 Feature

 
Papier(e)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: Entfernen von undefiniertem Verhalten beim lexikalischen Analysieren P2621R3 Ja 3.3 16.0.0*
DR98: Nicht kodierbare Zeichenkettenliterale als fehlerhaft behandeln P1854R4 14 14 16.0.0*
Nicht ausgewertete Zeichenketten P2361R6 14 17 (teilweise)*
18
16.0.0*
Hinzufügen von @, $ und ` zum Grundzeichenvorrat P2558R2 15 Ja 16.0.0*
constexpr Umwandlung von void*  (FTM)* P2738R1 14 17
DR20: Zur Ignorierbarkeit von Standardattributen P2552R3 15 Ja
DR11: Statische Speicherung für Initialisierer mit geschweiften Klammern P2752R3 14
Benutzergenerierte static_assert-Nachrichten  (FTM)* P2741R3 14 17
Platzhaltervariablen ohne Namen  (FTM)* P2169R4 14 18
Paketindizierung  (FTM)* P2662R3 15 19
Entfernen der veralteten arithmetischen Konvertierung von Aufzählungen P2864R2 14 18
DR11/20: Initialisierung von Template-Parametern P2308R1 9 18
Verhindern des Bindens einer zurückgegebenen Referenz an eine temporäre Variable P2748R5 14 19
Attribute für strukturierte Bindungen  (FTM)* P0609R3 15 19
Fehlerhaftes Verhalten bei nicht initialisierten Lesevorgängen, [[indeterminate]]-Attribut P2795R5
P3684R1
16
= delete("reason");  (FTM)* P2573R2 15 19
Variadische friends  (FTM)* P2893R3 15 20
DR98: Klärung der Regeln zur Auslassung von geschweiften Klammern bei der Aggregatinitialisierung P3106R1 Ja 17
DR20: Moduldeklarationen als Makros verbieten P3034R1 15
DR11: Triviale Endlosschleifen sind kein undefiniertes Verhalten P2809R3 14 19
constexpr placement new  (FTM)* P2747R2 15 20
Strukturierte Bindungerklärung als Bedingung  (FTM)* P0963R3 15 6 (teilweise)*
21
Ordnung von Einschränkungen, die Fold-Ausdrücke betreffen  (FTM)* P2963R3 19
Löschen eines Zeigers auf einen unvollständigen Typ sollte fehlerhaft sein P3144R2 15 19 6.7
Strukturierte Bindungen können ein Paket einführen  (FTM)* P1061R10 16 21
constexpr strukturierte Bindungen und Referenzen auf constexpr-Variablen P2686R5 16* 22 (teilweise)* 6.7
constexpr Ausnahmen  (FTM)* P3068R6 16
Oxford-Komma bei variadischen Argumenten P3176R1 15 20
Entfernen veralteter Array-Vergleiche P2865R6 15 20
#embed  (FTM)* P1967R14 15 19*
Konzept- und Variablen-Template-Template-Parameter  (FTM)* P2841R7 22 (teilweise)*
Triviale Unions  (FTM)* P3074R7
P3726R2
Observable Checkpoints (beobachtbare Prüfpunkte) P1494R5 16
Verträge  (FTM)* P2900R14 16
Reflexion  (FTM)* P2996R13
P3096R12
P3293R3
P3394R4
P3795R2
16*
Erweiterungsanweisungen  (FTM)* P1306R5 16
constexpr virtuelle Vererbung  (FTM)* P3533R2 16
Diagnose von Präprozessorfehlern P2843R3 16
Erlauben, main an das globale Modul anzuschließen P3618R0 16
DR20: Zulassen von #line vor Moduldeklarationen P3868R1
DR17: Klassenvorlagen-Argumentabzug für Typvorlagen-Template-Parameter P3865R3
const-ification von Splice-Ausdrücken in Vertragszusicherungen P3598R0
 

C++26 Feature
 

Papier(e)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++26 Bibliotheksfeatures

C++26 Feature

 
Papier(e)

 
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: Identifizierung von Textkodierungen  (FTM)* P1885R12
P2862R1
14
Arithmetische Überladungen von std::to_string und std::to_wstring verwenden std::format  (FTM)* P2587R3 14
Typüberprü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 16 rcu
<: >Read-Copy-Update ( FTM)*P2545R4 hazard_pointer
<: >Hazard-Pointer ( FTM)*P2530R3 ADL-sicheres
std::projectedP2538R1 14 *18 *19.38* *16.0.0* constexpr stabiles Sortieren
( FTM)*P2562R1 15 21 Mitglied
std::basic_format_arg::visit() ( FTM)*P2637R3 15 19 Mitglied
std::variant::visit() ( FTM)*P2637R3 15 18 std::is_within_lifetime
( FTM)*P2641R4 P3450R1
22 (teilweise)*
Erweiterung assoziativer Container um die restlichen heterogenen Überladungen
( FTM)*P2363R5 16 Ermöglichen der Verwendung von
std::weak_ptr als Schlüssel in ungeordneten assoziativen Containern ( FTM)*P1901R2 16 Native Handles in Dateiströmen
( FTM)*P1759R6 14 18 16.0.0* Schnittstelle von Zeichenkettenströmen mit
std::string_view ( FTM)*P2495R3 16 19 Schnittstelle von
std::bitset mit std::string_view ( FTM)*P2697R1 16 18 16.0.0* Weitere
für constexprcmath< und >complex< (> FTM)* ( FTM)*P1383R2 4.6 (teilweise)* Hinzufügen der neuen SI-Präfixe von 2022 für Verhältnisse:
std::quecto, std::ronto, std::ronna und std::quetta ( FTM)*P2734R0 14 17 *std::function_ref
: typgelöschter aufrufbarer Verweis ( FTM)*P0792R14 P3961R1
16
std::copyable_function
( FTM)*P2548R6 16 std::bind_front
, std::bind_back und std::not_fn für NTTP-aufrufbare Objekte (
 FTM)* ( FTM)* ( FTM)*P2714R1
16 std::submdspan()
( FTM)*P2630R4 P3355R1
P3663R3
P3982R2
16
Freistehende Sprache: Optionales
::operator newP2013R5 19.38* Freistehendes
std::char_traits, std::errc und Einrichtungen in: charconv<, >cstdlib<, >cstring<, >cwchar< (> FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)*P2338R4 19.38* Weitere freistehende Einrichtungen
(
 FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* ( FTM)* (
FTM )
* P2198R719.38*Sättigungsarithmetik ( FTM
)
*
P0543R3P4052R0
14 16
<*>18 16.0.0* debugging: Debugging-Unterstützung ( FTM
)
*P2546R5
<P2810R4>16 *linalg: Ein freies Funktions-Linear-Algebra-Interface basierend auf BLAS ( FTM
)
*
P1673R13
P3050R2P3222R0P3371R5 Benutzerfreundliche Gestaltung des assert()
-Makros  P2264R7Ja*Dynamische Format-Strings (
FTM
)*
P2918R2P3953R3
14 *
16 *18 16.0.0*std::span::at() ( FTM ) *
P2821R514  18 16.0.0*Hinzugefügtes Tupelprotokoll zu std::complex ( FTM )
*P2819R2 15 19 Eine neue Spezifikation für
std::generate_canonicalP0952R2 16 19.42* Entfernen des veralteten typedef std::allocator::is_always_equal
P2868R315 18 16.0.0* Entfernen der Funktionsüberladung von std::basic_string::reserve()
ohne Argument <P2870R3>18 16.0.0* Entfernen veralteter Unicode-Konvertierungs-Facets ( codecvt
) P2871R3 18 16.0.0*Freistehend: Entfernen von std::strtok ( FTM )
* P2937R014 19.40*Freistehende Bibliothek: Partielle Klassen  (FTM)*  (FTM)*  (FTM)*  (FTM)* P2407R5 14 19.42*
Freistehende Bibliothek: std::inout, std::expected, std::span
  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2833R2 14 19.42*
DR23: std::basic_const_iterator sollte der Konvertierbarkeit seines zugrunde liegenden Typs folgen  (FTM)* P2836R1
P2950R0
14 19.40*
DR20: std::make_format_args akzeptiert jetzt nur lvalue-Referenzen anstelle von Weiterleitungsreferenzen P2905R2 14 18 19.40* 16.0.0*
DR20: Korrektur der Formatierung von Code-Einheiten als Ganzzahlen  (FTM)* P2909R4 13.3 18 19.40* 16.0.0*
views::concat  (FTM)* P2542R8 15
Verkettung von Zeichenketten und Zeichenkettenansichten  (FTM)* P2591R5 15 19
Ermöglichen der Listeninitialisierung für Algorithmen  (FTM)* P2248R8
P3217R0
P3787R2
15
std::ranges::generate_random  (FTM)* P1068R11
Vergleiche für std::reference_wrapper und Einschränkungen für Vergleiche von std::pair, std::tuple, std::optional und std::variant  (FTM)*  (FTM)* P2944R3 14 22
19 (teilweise)*
Gepolsterte mdspan-Layouts  (FTM)* P2642R6 16
Neuer CTAD für std::span und std::mdspan mit integralen Konstanten P3029R1 16 19
Atomares Maximum und Minimum  (FTM)* P0493R5 16
std::formatter<std::filesystem::path>  (FTM)* P2845R8 16
Leerzeilen drucken mit std::println()  (FTM)* P3142R0 14* 19* 19.41**
Nicht deprecaten von std::polymorphic_allocator::destroy P2875R4 14.3* 15 19.41*
Entfernen veralteter strstreams P2867R2 19
Entfernen veralteter std::shared_ptr-Atomzugriffs-APIs P2869R4
Entfernen von std::wstring_convert P2872R3 19
DR23: Effiziente Implementierung von std::print  erlauben (FTM) *
P3107R5
P3235R3 16
19.43*constexpr  placement new (FTM) * P2747R2 15
20  Ausführungskontrollbibliothek (FTM) *
P2300R10
P3388R3
P3396R1
P3433R1
P3481R5
P3570R2
P3682R0
P3887R1Zusätzliche Korrekturen an der Ausführungskontrollbibliothek P3373R4
P3826R5
P3986R1
P4154R0
P4159R0
std::inplace_vector: dynamisch vergrößerbarer Vektor mit fester Kapazität  (FTM)* P0843R14
P3981R2
P4022R0
16
std::philox_engine: zählerbasierte Zufallszahlen-Engine  (FTM)* P2075R6 16
std::optional-Bereichsunterstützung  (FTM)* P3168R2
P3913R1
16 22 (teilweise)*
std::is_virtual_base_of: Typerkennung für virtuelle Basisklassen  (FTM)* P2985R0 15 20
std::dims für std::mdspan  (FTM)* P2389R2 16 19
DR11: Formale Spezifikation des Typs von std::ignore P2968R2 15 19 19.42*
DR20: Entfernen der gemeinsamen Referenz-Anforderung von den indirekt aufrufbaren Konzepten  (FTM)* P2997R1 15 19 19.42*
Als veraltet markieren von std::is_trivial und std::is_trivial_v P3247R2 15 21
DR20: Algorithmus-Funktionsobjekte P3136R1 Ja Ja 19.39* Ja
std::ranges::cache_latest_view  (FTM)* P3138R5 15
Einschränken der std::expected -Gleichheitsoperatoren  (FTM)* P3379R0 15 22
std::aligned_accessor: ein std::mdspan-Accessor, der eine Zeiger-Überausrichtung angibt  (FTM)* P2897R7 16
std::is_sufficiently_aligned: überprüft die Ausrichtungsvorbedingung eines Zeigers  (FTM)* P2897R7 16
std::atomic_ref::address()  (FTM)* P2835R7
P3936R1
16 (teilweise)* 22 (teilweise)*
DR11/20: cv-qualifizierte Typen in std::atomic und std::atomic_ref P3323R1 16 19.44*
constexpr std::atomic und std::atomic_ref  (FTM)* P3309R3
constexpr spezialisierte Speicher-Algorithmen  (FTM)* P3508R0
P3369R0
15
<stdbit.h> und <stdckdint.h>  (FTM)*  (FTM)* P3370R1 15*
16
<simd>: datenparallele Typen  (FTM)* P1928R15
P3430R3
P2876R3
P3691R1
P3922R1
P3690R1
P3932R0
P4012R1
16 (teilweise)*
SIMD-Mathe-Operationen P1928R15
P3844R4
Ein Dienstprogramm zum Erstellen von Ausführungsumgebungen P3325R5
constexpr-Ausnahmetypen, z. B. std::bad_alloc, std::bad_cast usw.  (FTM)* P3068R6
P3378R2
P3842R2
16
std::simd::chunk P3441R2 16
SIMD-Bit-Operationen  (FTM)* P2933R4
Unterstützung für verschachtelte std::complex-Werte in std::simd  (FTM)* P2663R7
Entschärfen und als veraltet markierenstd::memory_order::consume P3475R1
Setzen von std::monostate in <utility> P0472R3 15 21 19.50*
std::indirect  (FTM)* P3019R14 16
std::polymorphic  (FTM)* P3019R14 16
Weitere constexpr-Container und -Adapter
  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P3372R3 16 (teilweise)* 21 (teilweise)*
22 (teilweise)*
constexpr std::inplace_vector für nicht-triviale Typen  (FTM)* P3074R7
std::ranges::as_input_view  (FTM)* P3137R3
P3828R1
15*
16*
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
Bibliotheksunterstützung für beobachtbare Prüfpunkte  (FTM)* P1494R5
P3641R0
16
<contracts>: Unterstützung für die Behandlung von Vertragsverletzungen  (FTM)* P2900R14
P3819R0
16
Härtung der Standardbibliothek P3471R4
P3697R1
P3878R1
15 (teilweise)* 19.44* (teilweise)* 19.50* (teilweise)*
Freistehende Bibliothek: <algorithm>, <execution>, <memory>, <numeric>
und <random>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
P2976R1
DR20: Konvertierung zusammenhängender Iteratoren in Zeiger P3349R0 15 19.51*
<meta>: Reflexionsbibliotheksunterstützung  (FTM)* P2996R13
P3394R4
P3293R3
P3096R12
P3795R2
P4156R0
16 (teilweise)*
constexpr-Ausnahmen als Fehlerbehandlung in der Reflexion  (FTM)* P3560R2 16
std::define_static_object, std::define_static_array, std::define_static_string  (FTM)* P3491R3 16
std::simd::basic_vec und std::simd::basic_mask sind Bereichstypen P3480R6 16
std::optional<T&>  (FTM)*  (FTM)* P2988R12
P3836R2
16 22
std::string::subview() und std::string_view::subview()  (FTM)* P3044R2 16 22
constexpr std::shared_ptr und Freunde  (FTM)* P3037R6
Coroutine-Task-Typen  (FTM)* P3552R3
P3980R1
P3927R2
P3941R4
P4151R1
Asynchrone Bereiche: Erstellen von Bereichen für nicht-sequentielle Nebenläufigkeit  (FTM)* P3149R11
P3815R1
Paralleler Scheduler  (FTM)* P2079R10
P3804R2
Hochwertige Sender-Diagnose mit constexpr-Ausnahmen P3557R3
execution::write_env und execution::unstoppable-Sender-Adapter P3284R4
std::views::indices  (FTM)* P3060R3 16
Parallele Bereichsalgorithmen  (FTM)* P3179R9
P3709R2
Atomares Gleitkomma-Min/Max  (FTM)* P3008R6
Atomare Reduktionsoperationen  (FTM)* P3111R8
SIMD-Permutationsoperationen  (FTM)* P2664R11
std::mdspan::at() P3383R3 16
std::exception_ptr_cast()  (FTM)* P2927R3
P3748R0
P3981R2
16 (teilweise)*
Standardisierte constexpr-Typordnung  (FTM)* P2830R10
P3778R0
P4140R0
16
std::constant_wrapper  (FTM)* P2781R9
P3978R3
16 23
std::apply-Änderungen: std::apply_result, std::is_applicable und std::is_nothrow_applicable  (FTM)* P1317R2
Konsistente Nutzung von typgelöschten Allokatoren in std::promise und std::packaged_task P3503R3 17 19.51*
std::filesystem::path::display_string() und std::filesystem::path::native_encoded_string()  (FTM)* P2319R5
std::istream::ignore() weniger überraschend machen P3223R2 16 19.50*
DR11: Behobene Inkonsistenzen bei begin/end für std::valarray und std::initializer_list  (FTM)*  (FTM)* P3016R6 19.51*
std::flat_meow-Korrekturen  (FTM)*  (FTM)* P3567R2 22 19.51*
std::integer_sequence in strukturierten Bindungen und Erweiterungsanweisungen nutzbar machen  (FTM)* P1789R3 16 22
constexpr-Textformatierung  (FTM)* P3391R2
std::start_lifetime  (FTM)* P3726R2
std::is_structural: Typerkennung für strukturelle Typen  (FTM)* P3856R8 16
std::constant_wrapper als std::function_ref-Konstruktorargument P3948R1 16
Unterstützung von signed char und unsigned char bei der Zufallszahlengenerierung P4037R1
Implementierungsdefinierte Erkennbarkeit des Austauschs des Vertrags-

verletzungshandlers mittels Feature-Makro  (FTM)*

P3886R0 16
DR20: Benutzerdefinierte Konstruktoren von View-Iteratoren/Sentinels als privat festlegen P3059R2 Ja
DR20: Filter-View-Erweiterungen für sicherere Nutzung  (FTM)* P3725R3 16
 

C++26 Feature
 

Papier(e)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

* - Bewegen Sie die Maus über eine mit dem Stern * markierte Zelle, um zusätzliche Pop-up-Notizen anzuzeigen.
DRnn - die Zahl nn nach "DR" bezeichnet die Ziel-C++-Revision, auf die der Fehlerbericht angewendet wird, z. B. DR20 → C++20.

Externe Links

1.  C++26 – Wikipedia