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 Produktivcompilern 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. constevalundconstinit: Erweitern die Compile-Zeit-Fähigkeiten von C++.constevalerzwingt die Auswertung einer Funktion zur Compile-Zeit, währendconstinitdie 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 vonenum class-Definitionen, indem sie direkt in den aktuellen Gültigkeitsbereich importiert werden können.
Die Erweiterung der C++20 Standardbibliothek
- 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 Formatierungsbibliothek, 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 MacOSX.
Zuletzt geändert am 09.08.2025