Softwareentwicklung: Aktuelle Features in C++26 im Test

C++26 enthält einige Neuerungen, darunter eine verbesserte STL und Static Reflection. Bei den Contracts gibt es noch Diskussionsbedarf.

Artikel verschenken
vorlesen Druckansicht 6 Kommentare lesen
,
Lesezeit: 21 Min.
Von
  • Andreas Fertig
Inhaltsverzeichnis

C++26 steht vor der Tür: Ende März 2026 findet das finale Komiteetreffen in London statt. Hier kann es noch zu letzten Anpassungen kommen. Der Artikel stellt die wichtigsten Neuerungen vor, die C++26 bringt. Neue kleinere Sprachfeatures machen den Anfang, gefolgt von Neuerungen im Bereich constexpr. Sie knüpfen an Änderungen an, die vorwiegend in Embedded Systems nützlich sind. Im Blickpunkt stehen auch die Modifikationen bei den Templates und das vermutlich größte und einflussreichste neue Feature in C++26: die Reflexion zur Kompilierzeit (Static Reflection).

Mit dem Makro assert haben sowohl C als auch C++ ein mächtiges Werkzeug, um Invarianten zur Laufzeit zu testen und im Fehlerfall das Programm direkt zu beenden. Der Vorteil von assert liegt in seiner Eigenschaft, ein Makro zu sein: Es lässt sich beispielsweise im Releasemodus abschalten. Dadurch werden auch die Parameter nicht ausgewertet. Eine Auswertung der Parameter ist vor allem in C++ problematisch, da der Compiler unter anderem Konstruktoren und Destruktoren für Parameter aufrufen muss. Eine Ausnahme bildet die Compileroptimierung.

Mehr zu Softwareentwicklung
iX-tract
  • Das ISO-C++-Komitee hat C++ verbessert und mit neuen Features ausgestattet.
  • Eine wesentliche Neuerung ist Static Reflection, die Code zur Kompilierzeit analysiert.
  • Um die Lesbarkeit von Code zu verbessern und fĂĽr bessere Fehlermeldungen hat das C++-Komitee das SchlĂĽsselwort delete erweitert. Es lässt sich nun ein Grund beispielsweise fĂĽr das Löschen einer Funktion eingeben.
  • Contracts erlauben es, Bedingungen direkt an Funktionen zu formulieren, die der Compiler prĂĽfen kann. Die Aufnahme in C++26 ist geplant, aber noch nicht beschlossen.

Doch bei assert gibt es auch Nachteile. Das folgende Listing illustriert die Schwäche. Für eine Struktur Point prüft der Code, dass das Datenfeld x den Wert 2 enthält. Diese Prüfung schützt zum Beispiel vor einem Refaktorieren von Point, das die beiden Datenfelder vertauscht.

Das war die Leseprobe unseres heise-Plus-Artikels "Softwareentwicklung: Aktuelle Features in C++26 im Test". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.