The C++26 Standoff
The C++ programming community is currently embroiled in a high-stakes disagreement that has effectively halted the progress of the C++26 standard. During the recent ISO ballot, the Draft International Standard (DIS) for the language failed to pass, with 13 votes in favor, 9 against, and 12 abstentions. Because ISO requires no more than 25 percent negative votes, the failure was definitive. At the heart of this conflict is the controversial 'Contracts' feature, a long-debated proposal intended to help developers catch programming errors by checking preconditions and postconditions in code.
Contracts are designed to improve safety by verifying whether specific conditions hold true during execution, potentially preventing the undefined behaviors that often plague C++ projects. While this sounds like a clear win for software stability, the implementation details have divided the community. Proponents argue that the feature is essential for modernizing the language and curbing security vulnerabilities, while critics, most notably C++ creator Bjarne Stroustrup, view the current implementation as a bloated, hastily constructed addition that threatens the language's performance and design philosophy.
The Weight of the Argument
The resistance to the current Contracts proposal, known as P2900, centers on the fear of 'complexity and bloat.' Critics, including Stroustrup, have argued that the proposed implementation is messy, insufficiently tested, and should ideally be handled as a library-level feature rather than an integrated language component. They contend that forcing these checks into the core of the language risks undermining the blazing-fast execution speeds that have defined C++ for decades. For these developers, the integrity of the language's core architecture takes precedence over adding features that might be better served elsewhere.
Conversely, supporters within the standardization committee argue that the proposal has been vetted for years and passed previous majority votes. Figures like Andreas Fertig have publicly voiced frustration with those who continue to obstruct the proposal, suggesting that the refusal to accept a democratic outcome is damaging the collaborative environment of the C++ working group. The tension highlights an existential struggle within the community: how to evolve a legacy language to compete with newer, safer alternatives like Rust without sacrificing the technical characteristics that developers rely upon for high-performance computing.
What Lies Ahead for WG21
The failure of the ballot is an extremely rare event in the history of C++ standardization, leaving the working group, WG21, with few easy paths forward. As the group prepares for its upcoming meeting in Búzios, Brazil, the industry is watching to see if they can reconcile their differences or if the language is destined for a rebrand to C++27. The potential solutions currently being discussed are significant, ranging from excising the Contracts feature entirely—which would require undoing extensive library hardening—to shifting the feature into a separate technical specification that allows for continued refinement outside of the main release.
Ultimately, this standoff serves as a reminder of the immense complexity involved in updating one of the world's most widely used programming languages. Regardless of the outcome, the process will likely undergo significant scrutiny to ensure future standards can avoid the gridlock that has stalled C++26. Whether the final version ships this year or next, the legacy of this dispute will undoubtedly influence how C++ manages consensus and architectural changes for years to come.









