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.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Die Neuerungen in C++20
Lesezeit: 21 Min.
Von
  • Rainer Grimm
Inhaltsverzeichnis

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.

Nachdem C++14 und C++17 nur vergleichsweise kleine Änderungen an der Sprache brachten, steht C++20 mit vielen grundlegenden Neuerungen in der Tradition der "großen" Standards C++98 und C++11.

Die fünf vorgestellten Features finden sich im C++20-Entwurf. Allerdings wird es wahrscheinlich noch Anpassungen an der konkreten Syntax geben.