On October 23, 2026, the incredible happened. It was expected to be a uncomplicated formality: C++26 was up for a ballot by the ISO National Bodies (NBs). The options are continually approval, rejection, or abstention. Comments are additionally allowed. Since 1998, this procedure had run quietly and smoothly. Not so on October 23, 2026. After a twelve-week voting period, the outcome is in: Disapproved!
I would akin to citation current that I am a associate of the C++ Standardization Committee and, together alongside my colleagues, portray Germany’s vote. ISO rules additionally stipulate that certain votes are inner to ISO, and the results—or the breakdown of the results—may not be published. This part contains my own individual views.
The Current Status
As far as I know, this is the archetypal period in the former of C++ that DIS ballot failed. When I searched the ISO system, I could lone discover one another DIS that was not approved: ISO/IEC DIS 26926 C++/CLI Language Specification dated August 11, 2006. It’s imaginable that my hunt privileges aren’t adequate to perspective everything, but all ISO programming languages have to be apparent to me. The sad end of ISO/IEC DIS 26926: the project was halted. I citation this upfront to explain the importance of this vote.
In the following, I volition use assorted conditions from mundane ISO terminology. At https://isocpp.org/std/iso-iec-jtc1-procedures, there is an overview of the assorted stages of an ISO standard. DIS is the penultimate stage. As the overview additionally shows, a two-thirds bulk is required. This bulk was not achieved.
The logic for the rejection is fairly apparent from the comments submitted by the National Bodies (NBs): contracts. Put simply, a figure of NBs accept that this characteristic is not yet prepared for release.
The Process
Now it gets complicated. The C++ Standardization Committee, additionally known as WG21, follows ISO rules but additionally has several additional rules. One of these is (or was) that opinions are continually heard whenever new data becomes available. If an opinion was heard and a characteristic was nevertheless not changed as desired, the individual respects the outcome and accepts that many others disagree.
However, the voting build at the NB flat may additionally comprise of another individuals, or the NBs are, of course, liberated to ballot differently.
The former custom was that NBs would lone ballot against a norm if new data became accessible or if errors in the procedure or akin issues were identified. This changed on October 23, 2026.
It’s difficult to fairness in this complex situation; the NBs who desire C++26 without Contracts contend that there is new information. I myself discover it difficult to portion this view. A new document alongside old arguments is not new data to me.
The History of Contracts in C++
The characteristic has been on the desire catalog for a lengthy time. I was already in the area in Cologne rear in 2019, at the period for C++20, whenever Contracts, in a distinct form rear then, were being included in the standard. I was additionally in the area whenever the characteristic was removed from C++20 again during the identical meeting. As a result, a study collection was cast to location the topic of Contracts and its assorted aspects from 2020 to about 2024. Afterward, the study collection submitted its activity and proposals to the Evolution Working Group (EWG), the chief build for tongue extensions. There, the topic was discussed additional complete multiple meetings before being included in C++26 by a bulk vote.
In the next step, WG21 voted on the C++26 outline in March 2026, which included Contracts. Here, too, a ample bulk was achieved, although not without dissenting votes.
And that brings us to the next phase: DIS. At this stage, there were adequate “no” votes that a two-thirds bulk was not reached.
What happens next?
The big problem: what happens next? ISO, of course, has a procedure for this. It offers assorted options:
- Submit a revised outline for a new DIS vote.
- Submit a revised outline to the commission (that would be the CD phase).
- Publish a revised outline as a Technical Specification.
- Cancel the project.
All of these possibilities average a postpone in the next C++ standard. Whether it volition motionless be called C++26 is additionally up in the air, but that’s a much smaller issue.
The difficulty alongside all four options is that they necessitate a bulk inside WG21. However, this operating collection voted to move C++26 with Contracts into the next voting phase foremost to its release. And it did so alongside additional than fair the required two-thirds majority. The characteristic didn’t arrive out of nowhere, either; it was developed complete the way of years through the activity and perchance individual dedication of many people. It’s difficult to ideate that this collection would merely desire to forsake its work, which has received endorsement on multiple occasions so far. The identical applies to the collection that is dissatisfied alongside Contracts. This group, too, has invested effort, in several cases equal in substitute implementations. It’s difficult to ideate that, following these groups voted “no” in the DIS vote, the outcome would alter without Contracts being removed.
Even the final choice removing C++26 requires a bulk in WG21. As I comprehend it, this stage would average reverting to C++23 and hearing to C++29 without a sole change. This would power the activity of equal additional people. WG21 would afterward be tasked alongside incorporating features that have already been successfully included in C++26 into C++29. Since this can lone be done through a document backed by at smallest one individual advocating for it, features could be omitted if that individual lacks the motivation or time.
Of course, certainty concerning the voting outcome can lone be achieved if the corresponding way is really taken.
Unfortunately, the way onward is currently additional than uncertain. Perhaps this additionally explains why ISO/IEC DIS 26926 marked the end of this activity. Consensus is needed to move forward. Trust is continually required for consensus. Unfortunately, that rely has fair been shaken.
The next C++ standard, and thus the forthcoming of C++, is currently at an impasse.
The fine news is that the next gathering volition obtain location on November 16, which is fair a few days away. The top precedence volition be to interrupt the deadlock. This volition extremely apt have implications for C++29 as well; in fact, there is currently no logic to continue operating on this project.
My Personal Opinion
Normally, my articles are technically focused and liberated of individual opinion. Regarding the rejected DIS, I can lone say that I regard it a enormous catastrophe and awareness apologetic for the complete C++ community. Regardless of whether person likes Contracts, considers them important, or sees important weaknesses in them, the topic has been worked on for years and has received a bulk ballot multiple times in its current form. By voting “no,” an established system, one based chiefly on rely and respectful collaboration, has been shaken. Every ISO norm is a set of compromises. Everyone loses sometimes, and everyone wins sometimes. Overall, the outcome is one in which all participants have stated their best. During the DIS vote, the losing parties refused to obtain their loss. The inquiry that chiefly determines how to move forward is whether the collection can rebuild trust.
Andreas