- GCC 15 hat zahlreiche C++26-Funktionen hinzugefügt und einige C++23-Funktionen ebenfalls verbessert
- Zu den wichtigsten Neuerungen gehören Pack Indexing, Variadic Friends, Angabe des Löschgrunds und bedingte Anweisungen mit strukturierten Bindungen
- Neue Compiler-Optionen und Warnungen wurden ebenfalls eingeführt und verbessern so die Developer Experience
- Die Unterstützung für C++-Module wurde ausgebaut, und die Kompiliergeschwindigkeit von Templates wurde optimiert
- GCC 15 wurde als Standard-Compiler in Fedora 42 übernommen und soll bald auch im Red Hat GCC Toolset verfügbar sein
Neue C++-Funktionen in GCC 15
- GCC 15.1 wurde am 25. April 2025 veröffentlicht und führt C++26-Funktionen umfassend ein
- Der Standard ist weiterhin
gnu++17; aktuelle Funktionen lassen sich mit -std=c++23, -std=c++26 usw. aktivieren
- C++20-, C++23- und C++26-Funktionen sind weiterhin experimentell (experimental)
Wichtige C++26-Funktionen
-
Pack Indexing
- Bei Variadic-Template-Argumenten kann nun mit der Syntax
pack...[N] direkt auf ein bestimmtes Element zugegriffen werden
- So lässt sich etwa das erste Argument sauber referenzieren, ohne Wiederholungstricks zu verwenden
-
Attributangaben für Structured Bindings
- Auf jede einzelne durch Structured Binding gebundene Variable kann nun separat ein
[[attribute]] angewendet werden
- So kann zum Beispiel nur eine bestimmte gebundene Variable mit
[[deprecated]] markiert werden
-
Zusätzliche Erläuterung für gelöschte Funktionen
- Mit der Syntax
= delete("Grund") kann bei Aufruffehlern gelöschter Funktionen eine Meldung ausgegeben werden
-
Variadic Friends
- In Template-Klassen können mehrere Typen gleichzeitig als
friend deklariert werden
- Das ist nützlich zur Stärkung der Zugriffskontrolle, etwa beim Passkey Pattern
-
constexpr Placement New
std::allocator und placement new können in einem constexpr-Kontext verwendet werden
-
Structured Bindings in Bedingungen verwenden
- In
if-, while- und switch-Bedingungen können Structured-Binding-Deklarationen verwendet werden
- Die Auswertung der Bedingung erfolgt über eine vom Compiler erzeugte interne Variable
-
Löschen unvollständiger Typen verboten
- Wenn
delete oder delete[] auf unvollständige Typen angewendet wird, führt das im C++26-Modus zu einem Kompilierfehler
-
Warnung zur Oxford-Komma-Syntax
- Bei der Deklaration variadischer Funktionen wird das Muster mit nur
... ohne , ... in C++26 als Warnung behandelt
-
Entfernen von Array-Vergleichen
- Code, der Arrays mit
== vergleicht, wird als Fehler behandelt
- In C++20 war dies noch eine Warnung, im C++26-Modus wird es nun zu einem Kompilierfehler hochgestuft
-
#embed-Direktive
- Unterstützung für
#embed, um Binärdaten direkt in den Quellcode einzubetten
Noch keine Kommentare.