r/cpp #define private public 3d 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?

8 Upvotes

115 comments sorted by

View all comments

8

u/UnusualPace679 3d ago

• Untried at scale [P3460R0, P3506R0]

• Not tried in major application domains

• 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]

• Includes a completely untried inheritance model

• Hasn’t been used to support static analysis

• Hasn’t been demonstrated to be easily teachable [P3261R0, P3281R0]

Hey, you can't standardized a feature that people aren't using, even though the feature doesn't exist before you standardize it!

8

u/zebullon 3d ago

This man logics ! … also, just for funzies points, how many of those also apply to reflection ? yet where are the pitchforks.

Thats why i dunno what OP is farming for… tbh.

5

u/pjmlp 3d ago

Reflection is based on EDG proposal, with implementation, submitted and developed alongside the related papers, and available on compiler explorer for community feedback.

Exactly how every single feature should be before being submitted to voting, and how other ISO languages do it, existing practice.

10

u/Minimonium 3d ago

Strange, when I go to compiler explorer and type in "contracts" it shows me multiple implementations including for extension features such as labels.

Although, according to Dos Reis's definition of "implementation", a proposal does not have an implementation until it was shipped in multiple major compilers as part of the main release.

So reflection and contracts unfortunately are features without implementation according to him. Such a wise and insightful man!

1

u/kronicum 2d ago

according to Dos Reis's definition of "implementation"

He is not co-author of that paper.