ISO National Committees Reject Adoption Of C++26 Standard

The voting of ISO national committees (NB, National Bodies) ended with the refusal to approve the international standard C++26, the final version of the specification for which was adopted in March. This is the first such case in the history of the development of the main C++ standard. Possible ways of developing events include submitting a revised draft of the standard to a new vote of national committees, returning the draft to the stage of consideration by the C++ language standardization committee, publication as a technical specification rather than a standard, or cancellation of the C++26 project (return to C++23 and transfer of all approved innovations to C++29 with re-approval of all proposals).

The main reason for the rejection of the standard was the inclusion of contract programming (Contracts), allowing you to define formal interface specifications using three new operators: pre (precondition), post (postcondition) and contract_assert (assertion verification). Representatives of several national committees considered this functionality not mature enough, despite the fact that when approved by the WG21 working group, more than 2/3 of the participants voted for it. Initially, support for contract programming was intended to be included in the C++20 standard, but was sent for revision.

The situation is aggravated by a violation of the established voting practice, according to which representatives of ISO national committees agreed with the compromises previously agreed upon in working groups, and voted against the standard only when previously undetected deficiencies were discovered or when procedural errors were identified. This time, according to a member of the C++ standardization committee from Germany, the negative vote used arguments that had already been considered and rejected by the WG21 working group at previous stages of preparing the specification.

The next meeting of the working group is scheduled for November 16 and it is not yet clear whether the participants will be able to agree in a situation of shaky trust. Consensus is required to move forward with the C++26 specification or its cancellation, but opponents of contract programming have no intention of changing their position, and supporters do not want to devalue years of work.

/Reports, release notes, official announcements.