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.
- Andreas Fertig
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.
- 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
deleteerweitert. 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.