Revolution: Das ist neu in C++20
Der Entwurf von C++20 ist abgeschlossen. Contracts, Concepts, die Ranges-Bibliothek, Module und Coroutinen definieren neu, wie man mit C++ programmiert.
- Rainer Grimm
Der aktuelle C++17-Standard konzentrierte sich vor allem auf zwei Features: die Dateisystembibliothek und die parallelisier- und vektorisierbaren Algorithmen der Standard Template Library.
Der kommende Standard C++20 dagegen bildet die nächste Evolutionsstufe der Sprache. Dabei geht es um fünf neue Features:
- Contracts definieren Interfaces für Funktionen. Diese Interfaces können aus Vorbedingungen für die Funktionsargumente, Nachbedingungen für das Ergebnis einer Funktion und Zusicherungen während der Ausführung der Funktion bestehen.
- Concepts sind eine Erweiterung von Templates, mit denen Entwickler semantische Kategorien für die Menge der zulässigen Datentypen festlegen. Mit ihrer Hilfe lassen sich Templates deutlich einfacher und ausdrucksreicher nutzen.
- Die Ranges-Bibliothek erlaubt es, die Algorithmen der Standard Template Library direkt auf Container anzuwenden, sie mit dem aus der Unix-Shell bekannten Pipe-Operator zu verknüpfen und auf unendlichen Datenströmen zu definieren.
- Module sind eine Alternative zu Header-Dateien und versprechen viele Verbesserungen. Dazu gehört, die Trennung von Header- und Sourcecodedateien aufzulösen, Präprozessoranweisungen zu eliminieren, das Kompilieren zu beschleunigen und einfacher Pakete schnüren zu können.
- Mit Coroutinen öffnet sich C++20 für die asynchrone Programmierung. Damit werden sich in der neuen Version kooperatives Multitasking, unendliche Datenströme, Event-Schleifen und Pipelines elegant umsetzen lassen.
Die fĂĽnf vorgestellten Features finden sich im C++20-Entwurf. Allerdings wird es wahrscheinlich noch Anpassungen an der konkreten Syntax geben.
Das war die Leseprobe unseres heise-Plus-Artikels "Revolution: Das ist neu in C++20". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.