Contracts Sink C++26: First Draft Rejected at Final Vote Since 1998
The rejection strands static reflection and the concurrent execution framework for at least another version cycle, and no compiler vendor can truthfully claim full C++26 support until the draft is reworked. For teams weighing a new codebase, the deadlock is a concrete point for Rust, which moves forward on no one's vote.
The C++26 international standard draft was voted down by member-state delegations on October 23, the first time a C++ standard has been rejected at the final DIS (Draft International Standard) step since 1998. The previous close call was the C++/CLI specification in 2006. The committee had already passed the technical draft in March 2026; the rejection came at the political layer, where delegations vote on the entire document as one package.
The flashpoint is Contracts, a feature under development since 2020 that adds preconditions and postconditions to function signatures — `pre(index < values.size())` before the body, `post(...)` for return values — checked at compile or runtime depending on flags. Contracts are not input validation, and the stricter the checks, the less room the compiler has to optimize; that built-in tension is why the proposal ballooned. Three committee members filed a paper called "Contract concerns" listing their objections.
The vote sends the whole draft back for revision. The std::execution concurrency framework, static reflection, and every uncontested fix travel with it. Two paths remain: revise the Contracts details and revote, or drop the feature entirely. Either way the C++26 timeline slips, no vendor can claim full C++26 support until a standard is finalized, and Rust keeps shipping versions without any such vote.
The all-or-nothing vote structure means one contentious feature holds an entire release hostage; static reflection and the concurrency framework get delayed not on their own merits but by association.
Contracts spent five years in committee and passed the technical vote, so the rejection is a governance failure, not a design failure; the political layer overruled the people who actually built it.
The optimization-versus-safety tradeoff built into Contracts is why the feature is hard to get right: every check the compiler must honor narrows the transformations it can legally perform.
The timing is unlucky for C++; a formal delay in 'making C++ safer' lands exactly when Rust markets itself on safety and ships without any voting bottleneck.
Honestly never imagined a single Contracts feature would drag down the entire draft.
Completely unexpected.
Still don't understand why it's being opposed.