“Balloting has completed for C++26. Unfortunately it was Disapproved.”
On October 24, 2026, Robert Seacord, convener of the ISO C language committee, shared this historic bulletin. He noted that in the history of SC22, no programming language international standard had ever been voted down. Daveed Vandevoorde, a member of the WG21 Direction Group, was even more direct: prior to this ballot, no C++ draft at the DIS (Draft International Standard) stage had ever received a single negative vote. That thirty-year streak of zero negative votes ended on October 23, 2026.
The failure of C++26 DIS is fundamentally a crisis of procedural trust. A controversial feature had won majority support inside WG21, but dissenting members escalated the battlefield to national standards bodies. This flanking maneuver did more than disrupt the three-year publication schedule—it struck at the legitimacy of committee consensus itself.
Only 60% Approval: A 30-Year Flawless Record Shattered
An ISO Draft International Standard ballot requires passing two hurdles simultaneously. At least two-thirds (66.7%) of participating national member bodies must vote in favor, and negative votes cannot exceed 25% of total ballots cast. Failing either threshold means immediate disapproval.
The final tally dealt a double blow. Out of 20 participating national bodies, only 12 voted in favor, yielding an approval rate of just 60%—two votes short of the required two-thirds threshold. Meanwhile, out of 22 total ballots submitted, 9 were negative votes, representing 41% of all votes—nearly double the 25% ceiling.
Missing the approval threshold while blowing past the negative vote ceiling exposed a total fracture across national delegations. The flawless run of zero negative votes at the DIS stage, maintained across three decades of modern C++, came to an abrupt halt.
Contract Assertions Spill Over: Technical Debate Becomes Political Lobbying
The lightning rod behind this unprecedented ballot failure is language support for contracts. The proposed contract facility introduced core syntax around pre, post, and contract_assert. Its design aim was to establish preconditions, postconditions, and assertions directly in the language semantics, improving software safety, static analysis, and formal verification.
The standardization path for contracts has been fraught for years. At the 2019 Cologne meeting, an earlier contract proposal was abruptly pulled at the eleventh hour due to unresolved design splits. WG21 subsequently established a dedicated study group that spent years rebuilding the feature from scratch. In March 2026, WG21 finally endorsed the P2900 design through formal majority voting.
Yet a majority vote on the committee floor did not translate to consensus. Opponents argued that P2900 remained fundamentally flawed, pointing to unsettled questions around undefined behavior and a perceived lack of large-scale production validation. In response, P4433R0 systematically refuted these claims, warning that discarding P2900 would nullify six years of dedicated consensus-building work.
Dueling Papers: P4238 and P4433 Lay Bare Governance Rifts
The impasse quickly outgrew the committee’s traditional deliberative framework, transforming into an open lobbying campaign. On September 1, 2026, Vinnie Falco and three co-authors published WG21 paper P4238R1, bluntly titled: Returning C++26 for the Evaluation It Skipped.
Figure: Front page of WG21 paper P4238R1, urging national member bodies to vote Disapprove on C++26 DIS. Source: WG21 (open-std.org)
P4238R1 crossed a historic line in committee etiquette. Rather than addressing fellow WG21 technical experts, the four authors directed their appeal squarely at national standards bodies (NBs), calling upon them to vote Disapprove on the C++26 DIS. The same group also circulated P4334R0, arguing in a petition format that contracts contained foundational flaws.
The rebuttal from contract champions was swift and unsparing. More than a dozen key WG21 contributors, including Timur Doumler and John Lakos, co-authored P4433R0: Do not remove Contracts from C++26.
Figure: Front page of WG21 paper P4433R0, signed by prominent contributors opposing the removal of Contracts. Source: WG21 (open-std.org)
P4433R0 countered the technical objections point by point. The signatories accused the dissenting minority of refusing to accept internal democratic decisions and resorting to backroom lobbying of national delegations. German representative Andreas Fertig characterized the ballot outcome as an unmitigated disaster, noting that opponents merely reiterated arguments already exhaustively debated and rejected. The real casualty was the mutual respect and procedural norms upon which ISO standardization depends.
Behind 9 Negative Votes: Small-Nation NB Voting Under Fire
Under ISO rules, individual national body ballots are technically confidential. However, unofficial tallies circulating across the community identified nine disapproving nations, including Denmark, Spain, Italy, Japan, and Sweden. This unofficial roster immediately ignited intense scrutiny over the mechanics of national representation.
A member of the Polish national body shed light on how local committees operate behind the scenes. Just days before the balloting deadline, local officers were scrambling simply to establish a quorum. Several longtime members had changed employers, their registered emails bouncing, while their day-to-day engagement with ongoing C++ technical work was minimal.
Under ISO’s one-country-one-vote rule, every national body carries equal weight. When technical debates shift into external procedural votes, lobbying a small committee with only a handful of participants requires far less persuasion than convincing hundreds of domain experts at an in-person WG21 plenary. This structural asymmetry created immense leverage for determined opponents.
Four Paths Forward: Compilers March On, but Consensus Is Fractured
Faced with its first-ever DIS failure, WG21 now has four formal procedural options under ISO directives: revise the draft and issue a second DIS ballot, revert the document to a Committee Draft (CD), spin off contracts into an independent Technical Specification (TS), or terminate the work item entirely.
J. Daniel Garcia, a co-author of P4238R1, suggested a straightforward concession in response to Seacord’s announcement: remove the single controversial feature, and the remainder of the standard will readily pass. Daveed Vandevoorde also signaled support for excising contracts from C++26 while preserving library hardening improvements. While far from technically ideal, this pragmatic compromise offers the clearest path to approval.
National bodies now have a 12-week review window to submit formal ballot comments, closing in mid-January 2027. WG21 is scheduled to convene in Búzios, Brazil, on November 16, 2026. Vandevoorde expressed skepticism that a revised DIS could be balloted before the end of 2026; if the timeline slips into 2027, “C++27 would be a more accurate name.” Until a new edition is formally published, ISO/IEC 14882:2024 (C++23) remains the active international standard. The planned development roadmap for C++29 has been put on hold to resolve this governance crisis.
Major compiler vendors continue to implement accepted features, meaning production codebases face no immediate disruption. However, the release timeline of C++26 has been thrown into serious doubt. System architects and engineering leads can no longer assume contract syntax and semantics are finalized.
The deeper crisis exposed by this ballot is the breakdown of committee governance. When formal votes taken after years of rigorous debate can be overturned through external lobbying, the authority of technical consensus evaporates. Editing the standard’s text may take only a few months of compromise, but restoring trust in the standard-setting process will take far longer.
Reference links:
- Andreas Fertig’s blog: C++26 DIS failed, how does C++ survive?
- WG21 Paper P4238R1: Returning C++26 for the Evaluation It Skipped
- WG21 Paper P4433R0: Do not remove Contracts from C++26
- WG21 Paper P4334R0 and related discussions
- Robert Seacord’s public announcement on C++26 ballot results