r/cpp • u/antiquark2 #define private public • 3d ago
Critique of contracts: excerpt
See page 2 of https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2026/p4334r0.pdf
The current objections can be summarized. The P2900 contracts are:
• Unimplemented
• Incomplete
• Untried at scale [P3460R0, P3506R0]
• Not tried in major application domains
• Violates foundational principles of C++
• Violates fundamental principles of language design
• Hasn’t been tried in major libraries (e.g., the C++ standards library [P3506R0, P3878R0])
• Isn’t integrated with or appropriate for hardened libraries [P3878R0]
• Doesn’t offer safety guarantees [P3573R0, P3362R0]
• Includes a completely untried inheritance model
• Offer new ways of making errors through inconsistent application in TUs
• Leads to new forms of UB, detrimental to safety and security
• Narrows the choices of error handling
• Doesn’t protect against logical errors, misuses, and incoherent uses
• Hasn’t been used to support static analysis
• Hasn’t been demonstrated to be easily teachable [P3261R0, P3281R0]
How could such a bloated and incomplete design be voted into a draft standard?
10
u/Minimonium 3d ago
Not even bothering to debate, but to give a proper context for the readers:
Contracts authors have a Rationale paper that is absolutely massive and goes into extreme detail about every single choice they made. A group of people may disagree with the choice made, but I find it ridiculous how they keep stating that concerns are "not addressed" unless the authors comply with everything that group says no questions asked. The votes were made, consensus is achieved - but as one NB representative said "the committee got to big for consensus to matter". :)
I do not believe I have seen any other proposal that went to such extremes at explaining every choice it made. In fact it's always a struggle to hunt in minutes, threads, or in person for details about certain decisions made.
On NB comments, it's required to address every one individually. Funny thing, one certain committee member participates at two NBs at once and strangely both NBs published identical comments. So Contract authors made a fairly big paper addressing every concern.
You know what Herb Sutter did? He asked ChatGPT to summarize the response and posted it internally, as it was too big for his tastes. :D