C++26 Disapproved
11 points by BenjaminRi
11 points by BenjaminRi
I found this confusing because I didn't understand what "DIS" is. I wondered if it was related to the result "disapproved", but no, it seems to be "Draft International Standard".
C++ committee members are by definition part of the national bodies that rejected the C++ committees proposal. There are of course people in the NBs that do not care for C++ at all, but those typically follow the people they trustbthat were in the relvant meetings or abstain. That's why hardly any prior art exists here: Who votes against the draft they approved themselves earlier?
Its a spectacular mess the C++ committee has created for itself here.
Who votes against the draft they approved themselves earlier?
That's not really how it works. Individual papers are approved one at a time by votes in sessions in the in-person meetings. This already creates a bias towards people who have the funding to travel to these. Because they're in-person meetings and the votes are live, there's a reasonable chance that people either haven't had time to read the entire proposal (especially something as big as P2900) or they are voting based on presentations or trust for other people. I've not been to one of these meetings but other folks have written about the peer pressure they experienced to vote the 'right' way. The final vote based on the DIS is a vote on the combination of all of the things that were voted in individually and it's also a vote where national bodies have polls that run for several weeks and give people a chance to read a lot.
Contrast this with another standards group I'm involved in: ETSI. In an ETSI process, the draft is stored in git. Desired changes are raised as issues. There's online discussion that either reaches consensus or is flagged for discussion at the meetings. Concrete changes are raised as PRs. These either reach consensus in review or are flagged for discussion. The discussions in meetings are not where you make decisions, they're where you explain and discuss things. This gives a much more thoughtful decision-making process.
The draft sent off to the NBs was polled in the plenary. So there is a picture of what the majority of experts in the committee (present at the day) think.
Whether or not some of those experts are actually doing a good job is a different story.
[edit: I fixed some grammar and apostrophes]
No, they aren't - I'm not sure why you believe that but it's not true. The basic model is that each wg21 member is a representative on a TAG or similar for each country's NB. The TAG makes a recommendation to their NB, and then each NB can choose to accept (or not) that recommendation - independently to anything that the TAG recommends. The votes inside each NB may not even be available to that country's own TAG.
I also cannot comment on the actual voting at any given part of this, but claiming that the members of WG21 are the voters at the NB level is absolutely false.
But you're not wrong about the mess.
Oh, come on. That's just a level of indirection you are describing there. Its the same group of people either voting or advising the rest on what to vote for.
Who votes against the draft they approved themselves earlier?
Votes are counted differently in the two cases. To a first approximation WG21 votes are 1 person 1 vote, while the NB ballot is 1 country 1 vote, so even if you assume the same set of people are involved in the two votes the right distribution of naysayers can result in diverging outcomes.
I am curious why this went to a vote at all. This sounds like the kind of situation that should have been resolved before voting on the standard.
From the post:
In the next step, WG21 voted on the C++26 draft in March 2026, which included Contracts. Here, too, a large majority was achieved, though not without dissenting votes. And that brings us to the next phase: DIS. At this stage, there were enough “no” votes that a two-thirds majority was not reached.
What happened in the interim?
I think NB deliberations are technically supposed to be confidential so I'm skeptical that we'll see an official accounting of what happened.
If you're willing to believe comments on /r/cpp, including from people who are privy to those internal deliberations, then I think one can attribute this outcome to some combination of hope (contracts had a pretty significant margin in favor in WG21, so perhaps that'd be enough to make it past the NB ballot), vote distribution (i.e., each NB gets one vote and some NBs are larger than others, so the right distributions of support/oppose in WG21 can still result in the NB vote failing even if you assume no malfeasance), peculiarities of how NB votes are done (IIRC the US NB vote is determined at least in part by people who aren't deeply involved in WG21) and active lobbying (or sabotage, depending on who you ask).