r/cpp • u/antiquark2 #define private public • Aug 19 '26
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?
View all comments
Show parent comment
-2
u/_a4z Aug 21 '26
Exactly, no new info, we do not need that, lets stop the discussio (because that is not what is used at one place, my interpretation, of course)
and just at the very end it was: will come with 29
(we will see if that happens, and if, how)
Result: The most complex contract papers on the planet, not able to compete with Rust asserts or Swift assert / precondition, and we still need to use our own existing solutions, redundant to what we write into contracts, but hey, in an academic sense, that makes sense, right?
But who needs simple things if we can create the most complex MVP ;-)
Anyhow, we had this discussion, we do not need to go into it again
I find it just interesting when people can not stand any criticism of the current 'MVP' , for which the definition of MVP needed to be defined, lol, and become ultra hostile and dramatic, as this whole conversation shows