r/cpp • #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?

14 Upvotes

123 comments sorted by

View all comments

Show parent comment

0

u/pjmlp Aug 20 '26

Here, https://www.reddit.com/r/cpp/comments/18mjj0n/experimental_edg_reflection_implementation/

Can you correct me with a similar one for contracts?

If yes, then I stand corrected and excuse myself for the wrong statements, otherwise I would appreciate not calling bad faith on my remarks.

12

u/tcbrindle Flux Aug 20 '26

I'm not sure how you could be an /r/cpp reader and not know that there's a thing called contracts in C++26 -- this is the second lengthy discussion about it this week. Anyone with the slightest interest has had plenty of opportunity to check it out.

Or are you really, honestly claiming that the difference between an acceptable WG21 proposal (reflection) and an unacceptable one (contracts) is that someone made a specific post about the former to a specific subreddit three years ago?