deniz.in

Markets

Weather

Loading weather

· via Hacker News – Front Page (native)

C++26 fails its ISO DIS ballot, reportedly the first SC22 language standard to do so

C++26's DIS ballot failed both approval thresholds, with nine national bodies voting no, reportedly over contracts. Reflection, std::execution and library hardening are now stuck in an unapproved draft.

C++26 fails its ISO DIS ballot, reportedly the first SC22 language standard to do so

What happened

The C++26 draft standard failed its Draft International Standard (DIS) ballot, which closed on 23 October 2026. Robert Seacord, convenor of the ISO C committee, published the result on LinkedIn the following day. According to a detailed write-up on train-it.eu, this is the first C++ draft ever to fail at this stage. Seacord wrote that he does not believe any language standard from SC22, the ISO subcommittee that covers programming languages, has ever failed its ballot before, and Daveed Vandevoorde of the WG21 Direction Group noted that no earlier C++ draft had received even a single vote against.

The practical consequence is that reflection, std::execution, library hardening and contracts all sit in a draft that ISO has not approved, and nobody knows how long the delay will be.

The vote count

A DIS has to clear two hurdles, and the train-it.eu post lays out the numbers for both. The draft needed at least two-thirds approval among voting P-members: it received 12 votes in favor out of 20, or 60 percent, where 14 were required. It also had to keep negative votes from all voting bodies at or below 25 percent: it received 9 out of 22, roughly 41 percent, where only five were allowed. Either failure alone would have sunk the ballot.

Nine national bodies voted no: Denmark, Finland, Iran, Italy, Japan, Luxembourg, Romania, Spain and Sweden. France and Ireland abstained but submitted comments, bringing the total number of commenting countries to 11. Poland and the United States abstained without comments. The comments themselves have not been published yet; ISO/IEC directives require a full report, including the text of every comment, within 12 weeks of the ballot closing, which sets the deadline in mid-January 2027.

Contracts at the center of the dispute

The blog's author, who is a member of the Polish national body, argues the no votes were about contracts, the feature that lets developers write preconditions, postconditions and runtime assertions directly in function signatures. The opposition was on record before the vote: both objections raised at the Croydon plenary that sent C++26 to ballot concerned contracts, several national-body comments on the earlier committee draft asked for their removal, and paper P4238R1 explicitly urged national bodies to vote no over the contracts design and how it advanced through the committee.

Much of the argument is about semantics. The draft defines four evaluation modes for contract assertions — ignore, observe, enforce and quick-enforce — and leaves the default choice to the implementation, with GCC 16 exposing the selection through a compiler flag. The core disagreement is whether a contract assertion is a check the build may drop or a guarantee the program can rely on.

What happens next

The ISO directives offer four paths after a failed DIS: circulate a revised enquiry draft with an eight-week vote, circulate a revised committee draft for comments, publish the work as a draft technical specification, or cancel the project. The SC22 chair selects among the first three in cooperation with the secretariat and WG21's convenor; only cancellation requires a decision by SC22 as a whole. WG21's role is to address the comments and recommend a course. No announcement of a decision had been made when the post was written.

The next WG21 meeting, in Búzios, Brazil from 16 to 21 November 2026, will be the first full committee gathering since the result, and opinions are split. Paper P4433R0 proposes seeking another ballot with contracts unchanged, rejecting removal requests that bring no new technical information. J. Daniel Garcia, a co-author of P4238R1, contends the short-term fix is simply to drop the one contested feature so the rest of the standard can likely win approval. Vandevoorde's recommendation is to remove contracts from the draft while adjusting the text to keep library hardening.

Why it matters

If the reports hold up, this is the first time an SC22 language standard has been rejected at ballot — a genuine institutional shock for a language that has shipped a new standard on a steady three-year cadence. Every headline feature of C++26 is now hostage to a process dispute over a single facility, with no timeline for resolution. The choice facing WG21 in Búzios is as much about governance as technology: resubmitting unchanged would test whether national bodies can block a design twice, while removing contracts would tell future dissenters that a coordinated no vote works. Meanwhile, implementers, educators and libraries already building against C++26 contracts — GCC 16 among them — are left waiting on an ISO process that has never before produced this outcome.

  • #cpp
  • #iso
  • #standards
  • #contracts
  • #programming-languages