C++20 Delta Seminar

Die neue Syntax von C++20 und die Erweiterungen der C++ Standardbibliothek gegenüber C++17.

Dieses Seminar behandelt die reinen Unterschiede von C++20 gegenüber dem älteren Standard C++17. Insofern ist dieses Seminar ideal für Teilnehmer die schon ein stabiles Wissen über C++17 besitzen und nur die Neuerungen kennenlernen möchten.

Die folgenden Themen werden durchgenommen:

Die neuen Sprachmerkmale von C++20

  • Concepts: Eine Ergänzung zur Template-Metaprogrammierung, die es erlaubt, Anforderungen an Template-Parameter direkt und explizit zu definieren. Dies führt zu klareren Fehlermeldungen und einfacher lesbarem generischen Code.
  • Module: Die Lösung für die Probleme der Header-Dateien. Module ermöglichen schnellere Kompilierzeiten, verbessern die Kapselung und vereinfachen die Abhängigkeitsverwaltung in großen Codebasen. Stand 31.07.2025: dieses Feature ist in den meisten Produktiv­compilern noch in einem experimentellen Zustand.
  • Coroutinen: Ein neues Paradigma für asynchrone und nebenläufige Programmierung. Coroutinen erlauben es, blockierende Operationen in einem sequenziellen, nicht-blockierenden Stil zu schreiben, was die Lesbarkeit von I/O- oder Event-basiertem Code verbessert.
  • Three-way Comparison Operator (<=>) – der Spaceship Operator: Vereinfacht das Schreiben von Vergleichsoperatoren. Mit der Implementierung dieses einzelnen Operators können Compiler automatisch alle relationalen Operatoren (<, <=, ==, !=, >, >=) generieren.
  • consteval und constinit: Erweitern die Compile-Zeit-Fähigkeiten von C++. consteval erzwingt die Auswertung einer Funktion zur Compile-Zeit, während constinit die statische Initialisierung einer Variable zur Compile-Zeit garantiert.
  • Lambda-Verbesserungen: Lambdas werden flexibler, unter anderem durch die Einführung von Template-Parametern für Lambdas und erweiterte constexpr-Fähigkeiten.
  • using enum: Vereinfacht den Zugriff auf Enumeratoren innerhalb von enum class-Definitionen, indem sie direkt in den aktuellen Gültigkeits­bereich importiert werden können.

Die Erweiterung der C++20 Standard­bibliothek

  • Ranges Library (Bereiche): Eine mächtige Bibliothek, die das Arbeiten mit Datenkollektionen transformiert. Sie ermöglicht das Schreiben von funktionalen und verkettbaren Operationen (z.B. Filtern, Transformieren) auf Sequenzen.
  • std::span: Eine sichere und effiziente, nicht-besitzende Sicht auf eine zusammenhängende Sequenz von Objekten. Ideal für die Übergabe von Array-Teilen oder Puffern an Funktionen.
  • Concurrency und Synchronisationsverbesserungen: Neue und verbesserte Werkzeuge für die Nebenläufigkeit, einschließlich std::jthread (ein Thread, der automatisch `join`t und ein Stopp-Token bietet) und erweiterter atomarer Operationen.
  • Textformatierung mit std::format: Eine moderne, typsichere und leistungsstarke Formatierungs­bibliothek, die eine flexible und intuitive Syntax für die Erzeugung von formatierten Strings bietet, ähnlich der aus Python bekannten Syntax.
  • Kalender und Zeitzonenünterstützung: Erweiterungen zur <chrono>-Bibliothek für die präzise und einfache Arbeit mit Datum, Uhrzeit und Zeitzonen.

Das Seminar führt theoretisch und praktisch in den Standard C++20 - ISO/IEC 14882:2020 - ein. Nach den theoretischen Abschnitten werden praktische Übungen eingelegt, sodass die Anwendbarkeit der neuen Sprach- und Bibliotheksbestandteile vom Teilnehmer getestet werden kann.

Die meisten aktuellen Versionen der üblichen Produktivcompiler unterstützen den C++20 Standard. Die beste Unterstützung liefert der Clang C++ Compiler knapp gefolgt vom GNU C++ Compiler. Das im Seminar eingesetzte Betriebssystem ist unerheblich. Üblicherweise ist es Linux, Windows oder Mac OS X.

Zuletzt geändert am 09.08.2025