---
title: "C++26 flunks its ISO vote, a first: contracts fail to make the cut"
description: "On 23 October, ISO's national bodies rejected the draft C++26 standard, a first for the language. The main culprit is contracts, which raise a question every C++ developer should care about: is a check written in your code a guarantee, or just a compiler setting?"
canonical: https://inyourgeek.com/en/articles/2026-11-04-c-26-recale-a-l-iso-une-premiere-les
type: article
author: "Sébastien Soulier"
publisher: "InYourGeek"
language: en
datePublished: 2026-11-04
dateModified: 2026-11-04
section: "Dev"
tags: ["cpp", "iso", "contrats", "normalisation"]
---
# C++26 flunks its ISO vote, a first: contracts fail to make the cut
> On 23 October, ISO's national bodies rejected the draft C++26 standard, a first for the language. The main culprit is contracts, which raise a question every C++ developer should care about: is a check written in your code a guarantee, or just a compiler setting?
November 4, 2026 · Dev · 3 min
## A vote that missed on both counts

On 23 October, ISO's national member bodies voted on the Draft International Standard (DIS) for C++26. The next day, on LinkedIn, Robert Seacord, who leads ISO's C language committee, announced that the text had been disapproved and called it a “sad day for the C++ community”. On 4 November, [Next explained](https://next.ink/265495/le-c26-refuse-a-liso-une-premiere-dans-lhistoire-du-langage/) why it went wrong.

To pass, a draft has to clear two bars: win two thirds of the votes of participating members, and draw no more than a quarter of negative votes. C++26 got 12 votes out of 20, or 60%, when it needed 14. On the rejection side, it collected 9 votes against out of 22, or 41%. So it failed both tests at once. Say what you like about the result, at least its behaviour was well defined.

According to Mateusz Pusz, a member of the Polish national committee, nine countries voted against: Denmark, Finland, Iran, Italy, Japan, Luxembourg, Romania, Spain and Sweden. France and Ireland abstained and sent technical comments. Poland and the United States abstained without comment. According to Robert Seacord, no language standard had ever failed at this stage. Daveed Vandevoorde, of the C++ committee's Direction Group, goes further: until now, no draft had received a single vote against.

## Contracts: everyone wants them, nobody agrees how

A contract writes into a function's declaration what the function demands from whoever calls it (the precondition) and what it guarantees in return (the postcondition). A square-root function, for example, demands a positive number and promises a positive result. Bertrand Meyer popularised the idea in the 1980s with the Eiffel language, and Ada and D support it too. Its champions see it as documentation that can't quietly go out of date. In most repositories, that's still about as believable as a comment that describes what the code actually does.

The C++ committee has been working on the subject in a coordinated way since 2004. A first version, planned for C++20, was pulled in 2019. Yet the current version had been approved by a technical subgroup in February 2025, by 100 votes to 14. Everyone wants contracts. It's the design that has people at each other's throats.

## What the compiler flag decides for you

In C++26, the source code doesn't decide whether a contract gets checked. The text provides four behaviours: ignore the check, check and report the error without stopping, check and stop the program, or stop the program immediately without any intermediate handling. The choice is left to the implementation, which in practice means a compiler option.

If you write the code, the consequence is concrete. The same precondition can be strictly enforced, merely reported or quietly ignored, depending on how the binary is built. Change one setting on the compiler side and the same line means something else. In his post, Mateusz Pusz summed up the dilemma: is a contract assertion a check that the build can strip out, or a guarantee the program can rely on?

## Two camps that won't link together

The opponents object to exactly that ability to switch the checks off. In their view, it would write into the standard a habit everyone knows well: test with the checks on, then strip them out for production. It's like wearing a seatbelt for the driving test and never again. They want checks that are always on, whose cost Google puts at 0.3%. They also consider the design unfinished, and cite contracts on virtual functions as an example.

For now, the text put to the vote on 23 October is not an ISO standard.

For the first time in its history, the standard itself failed a precondition, and this time nobody had a build flag to make the check go away.
## Sources
- [Le C++26 refusé à l’ISO, une première dans l’histoire du langage](https://next.ink/265495/le-c26-refuse-a-liso-une-premiere-dans-lhistoire-du-langage/) — next.ink
_Article written with AI assistance from the cited sources, reviewed and approved by a human before publication._

---

Equivalent HTML page : https://inyourgeek.com/en/articles/2026-11-04-c-26-recale-a-l-iso-une-premiere-les
Published by InYourGeek — https://inyourgeek.com/en/a-propos
Method and safeguards : https://inyourgeek.com/en/methode
All articles : https://inyourgeek.com/en/archives
