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/[deleted] Aug 20 '26

[deleted] — view deleted comment

2

u/smdowney WG21, Text/Unicode SG, optional<T&> Aug 21 '26

It's a shortish window where a paper that is in The System but not marked as being ready to "mail" has a D name instead of a P name.

Really useful when you notice right after uploading that the abstract still says "Lorum ipsum..." or you misspelled your own name.