Pull to refresh
Logo
National bodies reject C++26 draft in first failed ballot

National bodies reject C++26 draft in first failed ballot

Rule Changes

Nine national bodies voted the draft down over contracts, the first failed ballot in C++ history

Overview

Updated Oct 27

National bodies rejected the C++26 draft in its ISO ballot, the first failed ballot in the standard's history. Twelve of 20 counted votes from participating members were in favor, short of the two-thirds needed, and nine of 22 member bodies voted no, past the 25 percent cap.

The objection is contracts, which let programmers state what a function expects and have the program check it at runtime. Two papers filed as the ballot closed split the response: P4388R0 asks the committee to resubmit the same draft, while P4433R0 urges another ballot with contracts untouched. WG21 meets in Búzios, Brazil, November 16 to 21, and ISO's SC22 chair then chooses between a revised draft, a new committee draft, a technical specification or cancellation.

Why it matters

A failed C++26 ballot could slip the next ISO C++ standard past 2027 or kill the contracts feature the committee fought to keep.

Questions about this story

Free account needed to ask — your question is kept and asked for you right after sign-up. Answers are public.

No questions yet — be the first to ask.

Key Indicators

114
WG21 votes in favor of sending C++26 to ballot
March plenary vote in Croydon; 12 opposed, 3 abstained.
12 of 20
National body votes in favor in the ISO ballot
60 percent. ISO requires two-thirds of counted P-member votes; 12 P-members abstained and were not counted.
9 of 22
Member bodies voting against the draft
41 percent negative. ISO allows no more than 25 percent. Either miss alone would have blocked the draft.
11
National bodies that filed comments on the draft
The nine no votes plus France and Ireland, which abstained but commented. Poland's internal vote to reject the draft and file technical comments failed, so it abstained without comments; the United States also abstained.

Voices

Curated perspectives — historical figures and your fellow readers.

Sign up to generate historical perspectives on this story.

People Involved

Organizations Involved

Timeline

March 2026 October 2026

7 events Latest: October 24th, 2026 · 3 weeks ago
Tap a bar to jump to that date
  1. Disapproval of C++26 ballot reported

    Latest Revelation

    Robert Seacord posts the tally: 12 of 20 P-member votes in favor, nine of 22 member bodies against. Nine countries voted no, including Denmark, Finland, Italy, Japan, Spain and Sweden.

  2. C++26 ballot period closes

    Procedural

    The twelve-week DIS ballot ends. The draft misses both thresholds: 12 of 20 counted P-member votes in favor and nine of 22 member bodies opposed.

  3. Berne proposes resubmitting C++26 as-is

    Proposal

    P4388R0 argues national body objections lack new information and the draft should ship with only a minor fix.

  4. P4433R0 asks WG21 to keep contracts and hold another ballot

    Proposal

    The paper says WG21 polls since February 2025 have backed contracts and urges the committee to reject national body requests to remove them, absent new technical information.

  5. No-vote campaign publicly underway

    Revelation

    The Shape of Code notes people in national bodies are canvassing for no votes, with contracts as the sticking point.

  6. ISO circulates C++26 draft to national bodies

    Procedural

    The draft enters the enquiry stage with a 12-week ballot window that closed in late October 2026.

  7. WG21 approves C++26 with contracts

    Vote

    Committee votes 114-12-3 to finalize the draft and send it to international ballot. Contracts stay in.

Scenarios

1

WG21 pulls contracts, C++26 ships without them

Possible Resolves by Q3 2027

Discussed by: National bodies that voted no; C++ Alliance petition signatories (Falco, Spicer, Garcia, Voutilainen)

National body comments cite contracts as the blocker. WG21 convenes, removes or defers contracts to a Technical Specification, and resubmits a revised draft for an eight-week enquiry ballot. The revised draft passes, and C++26 publishes in 2027 with a stripped feature set.

2

C++26 ships with contracts intact

Possible Resolves by End of 2027

Discussed by: Joshua Berne (P4388R0); WG21's stated consensus position

The committee treats the national body objections as a rehash of settled debates. WG21 advises SC22 to resubmit the same DIS with only a minor defect-report fix (CWG2228). The second ballot passes, and ISO publishes C++26 including contracts by late 2027.

3

C++26 stalls; ISO auto-cancellation looms

Unlikely Resolves by Jan 31, 2028

Discussed by: P4388R0's own warning about the 36-month work-item limit

The dispute deadlocks. National bodies demand contracts removal; the committee refuses. A second ballot fails, and the project hits ISO's 36-month work-item limit around January 2028 without reaching the approval stage. ISO either grants a 12-month extension or cancels the project, pushing C++ to a late C++29 or longer.

Historical Context

2 moments from history that rhyme with this story — and how they unfolded.

2008-2011

C++0x becomes C++11 (2008-2011)

The standard planned after C++03 was nicknamed C++0x on the assumption it would ship by 2008 or 2009. Feature debates and review delays pushed publication to August 2011, forcing a name change to C++11.

Then

Three years of schedule slip and a renamed standard.

Now

Established that C++ standards can slip badly when ambitious features stall; the modern three-year cadence began only with C++14.

Why this matters now

C++26 rejection threatens a similar or worse slip. If the draft cannot be approved, the project faces ISO's 36-month work-item cancellation in early 2028.

2017-2019

Contracts pulled from C++20 (2019)

Contracts were proposed for C++20 and generated intense debate about syntax, semantics, and safety. The committee removed them from the draft before publication so C++20 could proceed on schedule.

Then

C++20 shipped on time without contracts.

Now

Contracts became a recurring fight; the feature was redesigned and re-proposed for C++26.

Why this matters now

Removing contracts worked once, in 2019, to unblock a standard. This time the committee voted to keep them, and that decision is now blocking ratification.

Sources

(14)