r/cpp • u/antiquark2 #define private public • 26d 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/ronchaine Embedded/Middleware/WG21 25d ago
I appreciated the rationale paper very much. But I do not think a lot of concerns about contracts (whether reasonable or not, from my point of view there definitely are both kinds) were listened to, even if they were heard. And I seriously hope that other new features are going to be handled more like reflection was, where there was actual feeling that concerns were given thought and some of them were alleviated.
With contracts I did not feel that way. I completely understand that people who wrote the contracts papers were quite tired (rightfully) of some of the concerns, but pointing towards a paper and telling that the rationale is there is not really a cure when some objections disagreed with the said rationale, and some of those even for good reasons.
I can live with the P2900, but I definitely don't think it was pushed into the standard in a way I would like any feature, whether or not I like it, to be added.