C++26, WG21, and ISO's national bodies
In October, the ISO ballot on the C++26 draft international standard (DIS) closed. It did not pass. Not enough national bodies voted yes, and quite a few voted against it. The result has sparked discussions. The main dispute is about one new feature: contracts.
This is a new situation for C++, and it has stirred up strong emotions.
How a C++ standard gets made
ISO is the International Organization for Standardization, whose members are national standards bodies. WG21 is the C++ working group within the joint ISO/IEC structure.
In very simple terms, there are three steps.
-
People write papers. They propose features or changes to the committee, WG21.
-
People in the room discuss and poll the proposals. The WG21 convenor determines whether there is consensus to add a change to the draft.
-
National bodies review the resulting draft and vote in an ISO ballot.
Each national body has one vote. It can vote yes, vote no with technical comments, or abstain. In the ISO count, abstentions are simply left out.
The ISO/IEC Directives, section 2.6.3 give two conditions for approval:
-
At least two thirds of the counted votes from participating national bodies (P-members) must be yes.
-
No more than a quarter of the counted votes from all national bodies may be no.
The second count also includes votes from non-P-members. Negative votes without technical comments are excluded too.
Consensus
C++ has a tradition of consensus, which does not require unanimity. But this ballot did not even reach the required approval thresholds at national body level. Whatever consensus WG21 found in its meetings, it did not carry through to the national body ballot.
The many abstentions matter here too. A national body may abstain when its own experts cannot agree on a position. Those votes are excluded from the approval count, but they do not strengthen the claim of broad consensus.
Previous C++ standards were approved with effectively unanimous support. This is the first time a C++ draft has failed the ballot.
WG21 voting and ISO voting
Here, in the room means the experts participating in a WG21 meeting, including remote participants in hybrid meetings. Subgroups discuss proposals and poll their participants. The full committee then considers changes for adoption in plenary.
The route to participation depends on the country and membership arrangements. WG21’s participation guide explains the routes. Eligible participants vote as individuals in plenary polls. The ISO ballot, by contrast, counts one vote per national body.
The poll totals do not show how diverse the participants were, or what affiliations they had.
At either level, a vote does not show how closely each voter has read the document. People may rely on colleagues, presentations, or their company’s position. That is one more reason why a second look is useful.
What the ballot tells us
WG21 voted strongly in favour of adopting contracts and sending the draft to the DIS ballot.
The national body ballot still failed. The counts measure different things, so the numbers cannot be compared directly. But the result shows that agreement in WG21 was not enough to secure approval of the draft.
That does not prove which technical objections are correct, or that removing contracts is the only answer. It does mean there is an acceptance problem to solve. That puts the focus back on the document itself. It has to convince experts who were not part of the discussions that produced it.
A paper should speak for itself
The national body review works like peer review. A paper has to stand on its own when other experts read it. Reviewers do not need to have been in the room with the authors to raise valid questions.
A concern does not become invalid because its author was not in the room. Nor does discussing a concern mean that the resulting document has convinced the people raising it.
Feedback was collected along the way. But if the final document still receives negative votes, maybe the problem is the document. The people who produced it are responsible for making it convincing to its readers.
Why national body voices are valuable
National body experts are C++ experts too. Many also participate in WG21. They bring experience from different industries and uses of C++. They may see problems that the people who produced the document do not. Their objections can be debated, of course. But dismissing them because they were not in the room is disrespectful.
There is another reason to listen to an outside view. People who put a lot of work into something tend to value it more.
Psychology describes a few related effects:
-
Effort justification: the harder we work for something, the more we like it.
-
Sunk cost fallacy: the more we have invested, the harder it is to step back.
-
IKEA effect: we value what we built ourselves more than others do.
That does not tell us why anyone voted as they did. But it is a reason to value a second look, especially after years of work.
We accept code review as a way to improve our work. Why should reviewing a standard cause alarm just because the result was not the approval some had hoped for?
If you find this page useful, donate a coffee to the C++ user group of Stockholm, SwedenCpp