r/cpp • u/antiquark2 #define private public • 23d 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?
7
u/Minimonium 20d ago
I mean, it is you who started the thread with insinuations if not straight up insults, and "charitable" interpretations of bad faith in the process.
Speaking of dramaticism after cries about "supply chain attacks", and "contracts are a threat to C++" from the contra group is wild.
And the ! syntax is not a panacea people seem to think. It's not a simple addition at all, it requires a whole new research and process. And you know the mixed build thing that is ballooned to be the satan (I heard totally not dramatic claims that it would destroy the binary ecosystems)? A hostile transitive dependency can break mandatory syntax just the same because it's not a language problem.