4 Punkte von GN⁺ 2025-04-27 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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.

Noch keine Kommentare.