C++26 fails its ISO DIS ballot, with 12 votes in favor and nine against

C++26 fails its ISO DIS ballot, with 12 votes in favor and nine against

The C++26 draft has failed its ISO DIS ballot. The blog author, a member of the Polish national body, says that as far as he knows it is the first C++ draft to fail one. Robert Seacord, the convenor of the C committee, wrote that he does not think any language standard from SC22 has failed its ballot before. Daveed Vandevoorde, a member of the WG21 Direction Group, wrote that no earlier C++ draft got even a single vote against. Reflection, std::execution, library hardening and contracts all sit in a draft that ISO has not approved, and nobody yet knows how long the delay will be.

The ballot closed on 23 October 2026, and Seacord posted the result on LinkedIn the next day. The draft had to meet two conditions and missed both. Two-thirds of 20 needs 14 votes in favor, and it got 12. A quarter of 22 allows five negative votes, and it got nine. Either miss alone would have failed it.

The official result names every country. Nine voted No: Denmark, Finland, Iran, Italy, Japan, Luxembourg, Romania, Spain and Sweden. Each sent comments with its vote. France and Ireland abstained but also sent comments, so 11 countries commented in total. Poland and the United States abstained. The comments are not yet public. ISO/IEC Directives (clause 2.6.5 of Part 1) require a full report, with the result, the committee chair's decision and the full comments, within 12 weeks of the vote's end. For this ballot that means mid-January 2027 at the latest. At the committee-draft stage WG21 published such a report as N5028; the author does not know whether it will do so again.

Poland's position is decided in a technical committee of the Polish Committee for Standardization, KT 331. Its ballot asked whether Poland should reject the DIS and send technical comments. The vote did not pass, so Poland told ISO "Abstention" and no technical comments could go with it. The author will not share the tally or who voted how. A few days before the Polish ballot closed, the committee was still short of a quorum; some people on the list had changed jobs and some emails bounced. The author's advice: if you are on a national committee, vote, and if you can no longer take part, ask to be removed from the list of voting members, because the quorum counts inactive members and the office cannot remove them on its own.

The author is convinced the No votes were about contracts. Opposition was on record before the ballot: both objections raised at the Croydon plenary that sent C++26 to the ballot were about contracts, several national-body comments on the committee draft asked to remove them, and P4238R1 asked national bodies to vote No over the contracts design and how it advanced. The author expects all nine No votes to be about contracts, and says this will be known for sure only when the comments are published. Contracts let a function declare preconditions (pre), postconditions (post) and in-body assertions (contract_assert). The draft defines four evaluation semantics, ignore, observe, enforce and quick-enforce, and leaves the choice to the implementation. Much of the dispute is whether a contract assertion is a check the build may drop or a guarantee the program can rely on.

The directives give four courses of action after a failed DIS: circulate a revised enquiry draft with an eight-week vote instead of twelve; circulate a revised committee draft for comments; circulate it as a draft technical specification; or cancel the project. The SC22 chair chooses one of the first three, in cooperation with the SC22 secretariat and the WG21 convenor, and in consultation with the ISO/IEC central office. Cancelling is the only option SC22 as a whole must decide. WG21's job is to address the comments, recommend a course and, if needed, prepare a revised draft. When the author wrote the piece, no announcement of the chosen course had been seen.

The next WG21 meeting is in Búzios, Brazil, from 16 to 21 November 2026, the first full-committee meeting since the result. Opinions are split. Some want another ballot without changing or removing contracts; P4433R0 is a formal proposal for this, and it also asks WG21 to reject comments calling for removal unless they bring new technical information, with a poll in Búzios to confirm both. Others say the short-term fix is simple: J. Daniel Garcia, one of the authors of P4238R1, wrote under Seacord's post that "the short term solution is simple, remove one problematic feature and the rest of the standard can very likely be approved". Vandevoorde's recommendation "will be to remove contracts from the draft, with adjustments to keep library hardening". Some earlier national-body comments asked for a technical specification or a white paper instead.

The author personally loves contracts and prefers to keep them, citing checking and documentation that cannot quietly go stale. But the author can live with removing them if that lets the rest of C++26 ship, and does not want everything else to wait. The author has not seen one alternative that all objectors would accept. Until a new edition is published, the current standard is still ISO/IEC 14882:2024 (C++23).

Key facts

  • C++26 failed its ISO DIS ballot, which closed on 23 October 2026: 12 votes in favor where 14 were needed, and nine against where five were allowed. Either miss alone would have failed it.
  • The nine No votes came from Denmark, Finland, Iran, Italy, Japan, Luxembourg, Romania, Spain and Sweden; France and Ireland abstained with comments; Poland and the United States also abstained, and neither is among the 11 countries that commented.
  • The author expects all nine No votes to be about contracts, but the comments are not public yet; the full report is due by mid-January 2027 at the latest.
  • After a failed DIS there are four options: revised enquiry draft (eight-week vote), revised committee draft, draft technical specification, or cancellation. No choice had been announced when the author wrote.
  • WG21 meets in Búzios, Brazil, from 16 to 21 November 2026; proposals range from keeping contracts (P4433R0) to removing them so the rest of C++26 can be approved.

Why it matters

A failed DIS ballot means ISO has not approved C++26, and the author believes this is a first for a C++ draft. Seacord's belief goes wider: no SC22 language standard has failed its ballot before. The draft carries major features, including reflection, std::execution, library hardening and contracts, and all of them are now held up. Until a new edition is published, the current standard stays ISO/IEC 14882:2024 (C++23).

Who it affects

National bodies, WG21 and the SC22 chair face the next decisions. Teams that already use or are learning C++26 features are affected indirectly, since compilers implement the working draft, not a published standard. The author also appeals to members of national committees: vote, and ask to be removed from the voting list if you are no longer active, because inactive members make quorum harder to reach for everyone.

How to use it

Nothing has to be undone yet. The ballot does not change what compilers already ship: GCC 16 accepts -std=c++26 and Clang has -std=c++2c. GCC 16 implements contracts as part of its experimental C++26 support, and the Clang implementation has not been merged. Teams already using C++26 features can carry on, but should remember that what the compiler implements is a draft and may not match the published standard. Watch for the full report with the comments (mid-January 2027 at the latest) and the outcome of the Búzios meeting.

How solid is it

The vote figures and the list of countries come from the official result as relayed by the blog author, a member of the Polish national body, who also quotes Seacord's LinkedIn post and Vandevoorde's and Garcia's statements. The claim that this is the first C++ draft to fail a DIS ballot is hedged by the author ("as far as I know") and rests on statements by Seacord and Vandevoorde. The link between the No votes and contracts is the author's expectation, supported by earlier opposition on record, not yet confirmed by the comments.

Risks and caveats

The comments from the 11 countries are not yet available, so what the No votes actually argued is unconfirmed. No decision by SC22 on which course to take had been announced, and no schedule is known. What WG21 will decide in Búzios is open. Whether compiler vendors keep every drafted feature under the C++26 flag is up to each of them, and nobody can promise it today. The author states a personal preference for keeping contracts and teaches them in workshops, so the commentary is not neutral, though the author says the series was kept neutral while the vote was open.

“the short term solution is simple, remove one problematic feature and the rest of the standard can very likely be approved”

— J. Daniel Garcia, one of the authors of P4238R1, commenting under Robert Seacord's LinkedIn post