C++23 ist da: Überblick über die wichtigsten Änderungen des neuen Standards

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

C++23 ist da: Überblick über die wichtigsten Änderungen des neuen Standards



In der Welt der Programmiersprachen hat ein bedeutendes Ereignis stattgefunden – das internationale Komitee für die Standardisierung von C++ (ISO/IEC JTC1/SC22/WG21) hat offiziell eine neue Version der Sprache verabschiedet: C++23. Diese Version, die auf C++20 folgt, ist nicht revolutionär, enthält aber viele lang erwartete und nützliche Verbesserungen, die den Code sauberer, sicherer und leistungsfähiger machen. Lassen Sie uns die wichtigsten Neuerungen durchgehen.



Die wichtigsten Neuerungen in C++23



1. std::print und std::println – moderner Ersatz für cout

Dies ist wohl die auffälligste Änderung für die alltägliche Programmierung. Der Standardbibliothek wurden die Funktionen std::print und std::println hinzugefügt, die auf der leistungsstarken Formatierung von std::format (C++20) basieren. Die Konsolenausgabe ist jetzt nicht nur bequemer, sondern auch deutlich schneller als mit std::cout.

  • Beispiel: std::println("Hallo, {}! Antwort: {}", name, 42);
  • Vorteile: Typsicherheit, lesbare Syntax, Unicode-Unterstützung.


2. deducing this (P0847R7) – explizite Angabe von this

Eine der leistungsstärksten Neuerungen für die Metaprogrammierung und die Erstellung von Bibliotheken. Jetzt kann das Objekt this explizit als Parameter einer Member-Funktion übergeben werden. Dies löst alte Probleme mit Lambdas und CRTP (Curiously Recurring Template Pattern).

  • Ermöglicht das Schreiben einer einzigen Member-Funktion, die sowohl mit const- als auch mit nicht-const-Objekten funktioniert.
  • Vereinfacht die Implementierung des "Überladung nach Qualifizierern"-Musters.


3. Mehrdimensionale Operatoren operator[] (P2128R6)

Eine lang erwartete Möglichkeit – jetzt kann operator[] mehrere Argumente akzeptieren. Dies ist entscheidend für Bibliotheken, die mit mehrdimensionalen Arrays arbeiten (z. B. mdspan oder eigene Matrizen).

  • Früher: matrix(2, 3) oder matrix[{2,3}]
  • Jetzt: matrix[2, 3] – natürlich und prägnant.


4. std::expected – funktionale Fehlerbehandlung

Eine Alternative zu Ausnahmen und Rückgabecodes. Der Typ std::expected<T, E> enthält entweder einen korrekten Wert oder einen Fehler. Dies ist besonders wertvoll in Systemen, in denen Ausnahmen verboten sind (eingebettete Systeme, Betriebssystemkerne).



5. Verbesserungen bei Modulen und Konzepten

Module (C++20) haben Fehlerbehebungen und eine Stabilisierung erfahren. Sie werden jetzt besser von Compilern unterstützt. Konzepte sind flexibler geworden, und es wurde die Möglichkeit hinzugefügt, auto in Konzeptparametern zu verwenden.



Was ist noch erwähnenswert?

  • std::mdspan – mehrdimensionaler span für die Arbeit mit Arrays.
  • Fehlerbehebungen in std::ranges – Stabilisierung und Schließung von Lücken in der API.
  • Attribut [[assume]] – Hinweise an den Compiler zur Optimierung.
  • Statische Aufrufe von operator() – Möglichkeit

Empfohlene Bibliotheken