Neue C++-Funktionen in GCC 15
(developers.redhat.com)- 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++26usw. 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
- Bei Variadic-Template-Argumenten kann nun mit der Syntax
-
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
- Auf jede einzelne durch Structured Binding gebundene Variable kann nun separat ein
-
Zusätzliche Erläuterung für gelöschte Funktionen
- Mit der Syntax
= delete("Grund")kann bei Aufruffehlern gelöschter Funktionen eine Meldung ausgegeben werden
- Mit der Syntax
-
Variadic Friends
- In Template-Klassen können mehrere Typen gleichzeitig als
frienddeklariert werden - Das ist nützlich zur Stärkung der Zugriffskontrolle, etwa beim Passkey Pattern
- In Template-Klassen können mehrere Typen gleichzeitig als
-
constexpr Placement New
std::allocatorund placement new können in einem constexpr-Kontext verwendet werden
-
Structured Bindings in Bedingungen verwenden
- In
if-,while- undswitch-Bedingungen können Structured-Binding-Deklarationen verwendet werden - Die Auswertung der Bedingung erfolgt über eine vom Compiler erzeugte interne Variable
- In
-
Löschen unvollständiger Typen verboten
- Wenn
deleteoderdelete[]auf unvollständige Typen angewendet wird, führt das im C++26-Modus zu einem Kompilierfehler
- Wenn
-
Warnung zur Oxford-Komma-Syntax
- Bei der Deklaration variadischer Funktionen wird das Muster mit nur
...ohne, ...in C++26 als Warnung behandelt
- Bei der Deklaration variadischer Funktionen wird das Muster mit nur
-
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
- Code, der Arrays mit
-
#embed-Direktive- Unterstützung für
#embed, um Binärdaten direkt in den Quellcode einzubetten
- Unterstützung für
Noch keine Kommentare.