Neuer C++-Standard: Wichtige Änderungen in der aktuellen Version

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Neue C++-Version erschienen: Was sich in der Programmiersprache geändert hat



Das internationale Komitee für die C++-Standardisierung (ISO/IEC JTC1/SC22/WG21) hat offiziell die nächste Version des Standards verabschiedet – C++23. Diese Version bringt lang erwartete Verbesserungen, die die Sprache sicherer, ausdrucksstärker und benutzerfreundlicher für die Entwicklung sowohl von System- als auch von Anwendungssoftware machen. Wir berichten über die bedeutendsten Neuerungen.



Die wichtigsten Änderungen in C++23



1. std::print – formatierte Ausgabe ohne überflüssigen Aufwand

Eine der auffälligsten Funktionen ist die Einführung der Funktion std::print. Für die Ausgabe in den Standard-Stream müssen nun keine umständlichen Konstrukte mit std::cout mehr geschrieben oder printf mit dem Risiko von Typfehlern verwendet werden. std::print basiert auf std::format und gewährleistet Typsicherheit und Lesbarkeit:

  • Automatische Formatierung von Zahlen, Zeichenketten und benutzerdefinierten Typen.
  • Unterstützung von Locales und Unicode.
  • Geschwindigkeit nahe an printf, jedoch ohne Speicherlecks.


2. Verbesserte Arbeit mit Coroutinen

Coroutinen, die erstmals in C++20 eingeführt wurden, haben eine Reihe von Korrekturen und Ergänzungen erhalten. In C++23 wurde die Syntax für die Deklaration asynchroner Funktionen vereinfacht und die Unterstützung für std::generator hinzugefügt – einen neuen Typ zur Erstellung von Wertesequenzen im laufenden Betrieb:

  • Generatoren ermöglichen das Schreiben von lazy evaluations ohne manuelle Zustandsverwaltung.
  • Der Umfang von Boilerplate-Code für die Arbeit mit Coroutinen wurde reduziert.


3. Module – Stabilität und Leistung

Obwohl Module in C++20 eingeführt wurden, ließ ihre Implementierung in Compilern zu wünschen übrig. Im neuen Standard wurden die Regeln für Export und Import präzisiert, was zu Folgendem führte:

  • Verkürzung der Kompilierzeit großer Projekte um das 2- bis 3-fache.
  • Vollständige Kompatibilität mit Header-Dateien (Hybridmodus).
  • Möglichkeit, Module für die Standardbibliothek zu erstellen (experimentell).


4. Neue Möglichkeiten von constexpr und consteval

Die Erweiterung des Kontexts konstanter Ausdrücke ist eines der Hauptziele der C++-Entwicklung. In C++23 ist die Verwendung von constexpr erlaubt für:

  • Dynamische Speicherzuweisung (std::vector und std::string).
  • Aufruf virtueller Funktionen.
  • Arbeit mit Gleitkommazahlen ohne Genauigkeitsverlust.

Dies ermöglicht es, immer mehr Berechnungen zur Kompilierzeit durchzuführen und so die Laufzeit zu beschleunigen.



5. Attribut [[assume]] – Hinweise für den Optimierer

Das neue Attribut [[assume(Ausdruck)]] teilt dem Compiler mit, dass der Ausdruck an dieser Stelle im Code wahr ist. Dies ermöglicht:

  • Aggressivere Optimierungen (Entfernung von Verzweigungen, Schleifenfaltung).
  • Leistungssteigerung in kritischen Bereichen (Spiele-Engines, Embedded).


6. Vereinfachung der Multithreading-Programmierung

Es wurden neue Typen für die Synchronisation hinzugefügt: std::counting_semaphore mit verbesserter Leistung und std::latch für einmalige Barrieren. Darüber hinaus wurde die Unterstützung für std::mdspan

Empfohlene Bibliotheken