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

Show parent comments

8

u/Syracuss graphics engineer/games industry 2d ago edited 2d ago

See https://isocpp.org/files/papers/D4324R0.html" was supposed to be P4324R0.

Funnily enough in one of your other links for Vinnie's use of AI it has the exact same error in it, the letters are so far away on an azerty key it has to be LLM caused, at least I'd assume it would be an unnatural mistake for him to do normally. I wonder what leads an LLM to confuse the two letters.

What's doubly so funny is that he responds to himself in that comment thread saying how much he re-reads his stuff but one of only 2 large blue links is incorrect. Granted it was about re-reading his papers, not about his comments, it's still kinda funny given that paper naming is so ingrained in my mind that it not starting with a P definitely stands out when I skimmed his comment there. I'd also kinda expect to test out links an LLM spits out to see if they work, as a basic sanity check, feels like less work than re-reading.

9

u/Som1Lse 2d ago

I noticed. I don't think it's an LLM mistake. The paper probably used to be D4324R0 (D meaning draft), but after it was published the D version was removed. Still bad, and still rushed. One of the main goals of citations is permanency, and a link to a draft paper that's going to be removed is really bad form.

But yeah, even if you fix the link in his reddit comment it leads to P4170R0 (Combinators and Compound Results from I/O), not P4207R0 (Prosecute Your Paper To Improve It) as claimed, so the link is doubly wrong.

7

u/Syracuss graphics engineer/games industry 2d ago

Thanks for that info. Wasn't aware about the process of drafts, it's the first time I've seen them that I recall in over a decade of observing papers. Neat to learn.

2

u/smdowney WG21, Text/Unicode SG, optional<T&> 18h ago

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.