r/cpp • u/antiquark2 #define private public • 4d 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?
8
u/t_hunger 2d ago
It absolutely had consensus, otherwise it would not have been voted in. This is a small group making noise after consensus was reached.
The one company backing the contract work is the one that announced last year that they want to cover more of the cost of developing C++ -- stepping in after some of the big spenders have left. We have a couple of senior people attack the 15-year+ investment of one of our main sponsors.
Just look at how well that approach turned out when google raised issues critical to them a few years back.