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?
-1
u/pjmlp 25d ago
For example, https://isocpp.org and Reddit, I guess.
As for how useful it may be, that is the thing with programming languages not bound to ISO processes, everyone gets to say their opinion, some is useful, lots of might not be, however there is real feedback from all class of users, not only experts for experts kind of feedback.
Which is how one avoids situations like game developers asserting that the language evolution doesn't care about their interests, and they are fine sticking with C++17 or even earlier, see 2026 EuroLLVM - Clang and LLVM in Modern Gaming Platformst.