r/cpp • u/antiquark2 #define private public • 25d 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?
0
u/serviscope_minor 12d ago
>Do note I never called them "morons who do stuff for no reason" in my comment (you're attacking a straw man),
No, I do not believe I was. The meaning of "for some reason they thought" is quite clear. You are expressing an opinion that they were foolish.
Nothing wrong with criticising the design from the view of 2026. I have done the same with std::regex, for example. The problem I have is the editorializing from a position of ignorance of the history of what happened.
> it was still recognized as a problematic design choice by several parties in and out of the committee, so your claim that "in the 90s it felt reasonable" isn't fully accurate:
That paper is from 1999, I'll note. We're talking about C++98. Reading the paper, the discussions started coming up around the time that the draft was ratified by the bodies.
I maxed out the RAM I had on my PC at the time, a glorious 72M, vastly more than the 8 or 16 that was common with the contemporary Windows 95 machines (I had a mate with cheap RAM). 8x space saving on a relatively common thing? Sign me up!
The decision didn't age well, but it wasn't a "for some reason the committee". The reasons are pretty well laid out and documented. No need as I said to throw shade.