Neuer Standard C++23 veröffentlicht: Was sich geändert hat und wie es die Entwicklung beeinflussen wird
Das internationale Komitee für die Standardisierung von C++ (ISO/IEC JTC1/SC22/WG21) hat offiziell die neue Version der Sprache — C++23 — bestätigt. Diese Version ist nicht so grundlegend wie C++11 oder C++20, enthält jedoch viele lang erwartete Verbesserungen, die den Code sicherer, ausdrucksstärker und leistungsfähiger machen. Lassen Sie uns die wichtigsten Neuerungen analysieren, die jeder C++-Entwickler kennen sollte.
Wichtigste Änderungen in C++23
- Deducing this (P0847R7) — die am meisten erwartete Neuerung. Jetzt kann das Objekt, auf dem eine Methode aufgerufen wird, explizit angegeben werden, was das Überladen für lvalue/rvalue, konstante und nicht-konstante Versionen vereinfacht und Code-Duplizierung in CRTP-Vorlagen vermeidet.
- std::expected (P0323R12) — ein Typ zur Fehlerbehandlung ohne Ausnahmen, eine Alternative zu std::optional und Ausnahmen. Ermöglicht die Rückgabe entweder eines Werts oder eines Fehlers, was für Systeme mit strengen Leistungsanforderungen entscheidend ist.
- std-Module (P2465R3) — die Standardbibliothek wird jetzt über Module exportiert, was die Kompilierung beschleunigt und die Code-Isolierung verbessert. Beispielsweise ersetzt
import std;Dutzende von#include. - Verbesserungen bei Coroutinen — der Typ
std::generatorfür faule Sequenzen wurde hinzugefügt und viele Probleme mit der Leistung und Ergonomie von Coroutinen aus C++20 wurden behoben. - Multithreading — neue Mechanismen
std::latchundstd::barrierzur Thread-Synchronisation sowie ein verbessertesstd::counting_semaphore.
Was bedeutet das für Entwickler?
C++23 bricht nicht die Abwärtskompatibilität, führt aber neue Praktiken ein. Beispielsweise vereinfacht deducing this das Schreiben von Bibliotheken, und std::expected wird nach und nach umständliche Rückgabecode-Prüfungen ersetzen. Viele Compiler (GCC 13+, Clang 16+, MSVC 2022 17.6+) unterstützen bereits einen Teil der Funktionen.
Für diejenigen, die mit hochbelasteten Systemen arbeiten, sind insbesondere Module (20-40% schnellere Builds) und die verbesserte Fehlerbehandlung ohne Ausnahmen wichtig. Wenn Sie C++20 verwenden, erfordert die Migration auf C++23 kein Umschreiben des Codes — es reicht aus, das neue Compiler-Flag zu aktivieren.
Wann ist mit vollständiger Unterstützung zu rechnen?
Die vollständige Unterstützung für C++23 wird in Compilern bis Ende 2024 erwartet. Vorläufig können einzelne Features mit den Flags -std=c++2b (GCC/Clang) oder /std:c++latest (MSVC) getestet werden. Wir empfehlen, mit std::expected und deducing this zu beginnen — sie sind in realen Projekten am nützlichsten.
Aktuelle Codebeispiele und ein Vergleich mit C++20 finden Sie in der Compiler-Dokumentation. C++23 ist ein evolutionärer Schritt, der die Sprache sicherer und benutzerfreundlicher macht, ohne die Leistung zu beeinträchtigen.