ON
← Back to feed
GermanyCulture6 days ago

More code control with C++26 contracts

The article discusses the inclusion of Contracts in C++26, a feature designed to improve code control by defining interface conditions for functions. It explains how Contracts allow developers to specify requirements for function parameters and results using keywords like 'pre' and 'post'. The article also notes that while C++ now joins languages like Eiffel and Ada in offering this feature, the term 'Design by Contracts (DbC)' originates from Eiffel and is legally protected.

Mehr Codekontrolle mit C++26 Contracts

Multiplikationsfunktion als Beispiel

Invarianten einer Funktion prüfen und Auswertungssemantiken

Fazit

Artikel in

iX

7/2026

lesen

Die gute Nachricht gleich vorweg: Contracts sind Bestandteil von C++26 . Das Standardisierungskomitee hat beim finalen Treffen keine nennenswerten Änderungen mehr vorgenommen. Vorschläge für eine andere Syntax oder ein verringertes Featureset sind vorerst vom Tisch. C++ ist jetzt eine von vielen Sprachen, die Contracts als Sprachmittel anbieten. Eiffel und Ada besitzen das Feature schon lange. Aus Eiffel stammt auch der Begriff Design by Contracts (DbC), der rechtlich geschützt ist.

Die Idee hinter Contracts ist, Nutzenden einer Funktion die möglichen Anforderungen an die Funktionsparameter direkt und in Code mitzuteilen. Damit weiß ein Aufrufer, welche Werte für einen Parameter erlaubt sind. In C++ steht dafür pre zur Verfügung. Auch das Ergebnis einer Funktion lässt sich mit einem Contract auszeichnen. Er gibt eine Garantie für das Resultat und ist durch post angegeben.

Das Standardisierungskomitee hat Contracts in der bislang diskutierten Form in C++26 aufgenommen.

Contracts sind ein Sprachfeature, das Schnittstellenbedingungen für Funktionen definiert.

Die vier Auswertungssemantiken enforce , ignore , observe und quick-enforce definieren Verhaltensweisen für den Fall, dass eine Bedingung nicht erfüllt ist.

Beides ist nicht neu, jede Funktion hat Anforderungen an ihre Daten. Bisher ließen diese sich in C++ jedoch nur durch Dokumentation mitteilen. Der Nachteil dieses Ansatzes ist, dass Dokumentation und Code auseinanderfallen können und dass Entwickler die Dokumentation finden und lesen müssen. In C++26 werden Contracts direkt in C++-Code dokumentiert, also der Sprache, in der auch entwickelt wird, und ein Programm prüft diese Anforderungen zur Laufzeit.

Das war die Leseprobe unseres heise-Plus-Artikels "Mehr Codekontrolle mit C++26 Contracts".

Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.

Read the full article at heise online

1 reports

heise onlineIndependentCenter6 days ago
More code control with C++26 contracts

The article discusses the inclusion of Contracts in C++26, a feature designed to improve code control by defining interface conditions for functions. It explains how Contracts allow developers to specify requirements for function parameters and results using keywords like 'pre' and 'post'. The article also notes that while C++ now joins languages like Eiffel and Ada in offering this feature, the term 'Design by Contracts (DbC)' originates from Eiffel and is legally protected.

Bias read (Center): The article provides a technical explanation of C++26 Contracts without any political commentary, framing, or biased language. It focuses on software development practices and does not engage with politically charged topics.