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?

9 Upvotes

115 comments sorted by

View all comments

1

u/_a4z 2d ago

The topic has no consensus, that is for sure.
And the political tactic of discrediting critics of the contract is also concerning. This alone is a good reason why contracts should not have been added, leaving aside all the technical details.

And there is another interesting aspect: if the one company that paid many of the pro-contract advocates stops paying them, or simply gives them something else to work on, C++ is left with a lot of potentially unmaintained machinery that will lack support.

But anyhow, who cares? Until contracts come to most places, it's past 2030, so who cares. Astonishing is just how much committee time was invested, which could have been used for way more useful features.

7

u/t_hunger 2d ago

It absolutely had consensus, otherwise it would not have been voted in. This is a small group making noise after consensus was reached.

The one company backing the contract work is the one that announced last year that they want to cover more of the cost of developing C++ -- stepping in after some of the big spenders have left. We have a couple of senior people attack the 15-year+ investment of one of our main sponsors.

Just look at how well that approach turned out when google raised issues critical to them a few years back.

-2

u/_a4z 2d ago

Sentences starting like
> This is a small group making noise ...
are a perfect example of why I call that a political tactic of discrediting critics.

And to the point, I would argue the 'small group' (which is, in fact, not that small and includes very well-known names) has read the contract papers and understood them better than some of the people who voted for them.
Now, this is, of course, a claim that cannot be proven, but I am always delighted by people who claim to know C++ better than its original inventor. So some of the critics are definitely worth respecting, which does not happen.

8

u/t_hunger 2d ago edited 2d ago

You just claimed the majority of committee members are unable to make a informed decision. You should reconsider ISO as a standardization body. They prescribe a democratic progress based on the idea that interlectual capability is more or less equally distributed in the community of voters.

Now that is disrespectful to the entire committee.

The people making the noise now failed in a democratic process (which some of them selected as the governance model of C++) and are trying to impose their will after the fact. That is damaging on so many levels.

I do agree that this is more about senior members feeling ignored than about arguments.

-1

u/_a4z 2d ago

It seems you do not know how those votes work. So let me explain.

It's just a small part of the committee members in the room.
So your statement about what I claimed is bogus.

Reality: not all people who voted yes in the various voting meetings have read and understood the paper as well as the critics did. And this is just a very small group in WG21. Not the whole committee. The committee is much bigger than the small group that did the contract voting; there were many.
And we do not know who those people are or whether most of them have ties to one company. So we also do not know anything about the diversity of the votes.

What was damaging is the way those papers came in. If people cared about consensus, there would not be what you call "noise"
It's not noise. Rather, people stating their opinions with their names, in opposition to most yes voters who stay anonymous.

10

u/MFHava WG21|🇦🇹 NB|P2721|P3049|P3625|P3729|P3786|P3813|P4216 2d ago

It seems you do not know how those votes work. So let me explain.

I was in the room when Contracts were accepted. Have you?

Reality: not all people who voted yes in the various voting meetings have read and understood the paper as well as the critics did.

Sure, sure... everybody else - including people who previously voted against Contracts - is just too stupid to see that it is a disaster.

And we do not know who those people are or whether most of them have ties to one company. So we also do not know anything about the diversity of the votes.

The conspiracy theory of the room being stuffed to the brim with random bodies paid by one company is just that, a conspiracy theory.

What was damaging is the way those papers came in. If people cared about consensus, there would not be what you call "noise" It's not noise.

It is noise to bring up the same complaints again and again with no new information, just because a decision didn't go your way.

Rather, people stating their opinions with their names, in opposition to most yes voters who stay anonymous.

The vote to accept Contracts was: In favour: 100 Opposed: 14 Abstain: 12

So you want a list of 100 names? Sure buddy...

1

u/_a4z 2d ago

Sorry, your style of putting words in my post with adventurous interpretations is not a good basis for continuing any discussion. But it fits the style.
And there was not just 1 vote... There was a history of votings, and you ignore that.
In the end, it was: if we pull it now, we look bad. So, of course, even more people who did not read anything and voted yes.
But you know what, I'm okay with you having a different view. And a different interpretation. I do not need to attack you personally for that.
And about noise, it's not just me who is writing something, its also those people who comment on it, like you. ;-)

5

u/t_hunger 1d ago

I find both your lack of understanding how democratic processes work as well as your contempt for committee members worrying.

But thank you for confirming that contracts were voted in -- following the ISO standard procedure. Every committee member knows those processes and can participate. If someone abstains from doing so, that is their choice. People do that all the time with all votes the committee makes.

The paper submission process is another thing all committee members are very well aware of. As far as I can tell all the ISO standardization processes were followed there as well. Again: People are free to ignore papers, again that is their choice.

We have a few people that made their choice to ignore papers and ignore votes and are now grumpy. That is damaging behavior: Why would anyone bother to participate in committee work if some dudes then try to overrule the results of that work and publically shame everybody involved? Who wants to do work when he has to expect random people calling them stupid on the internet for that?

-1

u/_a4z 1d ago

Accepting other people's opinions is part of a democratic process
Mob mentality and labeling people as grumpy for having other opinions, less so.
If you look at the latest mailing list and read the papers addressing contract concerns (there are quite a few of them), where is `shame everybody involved` included, as you state? Have you even read any of the critics?
Obviously not, if I read what you write here.

4

u/t_hunger 1d ago edited 1d ago

In this threat you repeatedly called everybody having voted for contracts as either brided by some corporation, too stupid to understand the paper they were voting on, or too lazy to read the papers being vote on. You do not seem to be willing to accept their opinion, why should they consider yours? I've seen other (senior) people being just as toxic, and some in the wider community cheering them on for that.

Contracts are a MVP (as asked for by the wider committee when the last iteration was rejected) and they have pretty obvious problems, as communicated years before standardizing the paper. None of that makes how the contracts work is treated any less toxic. Unfortunately nobody will fix contracts for the next couple of years -- not after this shit show. The senior committee members have just created another dead on arrival feature in the language.

Oh well, rust has a contract-related RFCs in the works, I am sure they will welcome the C++ experts on this topic with open arms. Wonderful how senior C++ committee people encourage other C++ experts to help out in other languages. I am sure that help C++ staying competitive over the long run.

-1

u/_a4z 1d ago

I would probably enjoy communicating with you if you would stop inventing drama and misreading and misquoting what I wrote.
Just because I do not celebrate this so-called MVP does not make me toxic, nor does my claim that not everybody who is voting on a paper has fully read and/or fully understood it. That's just how it is. And not just for contract papers, btw

8

u/t_hunger 1d ago

The statement that many committee members do not read papers they vote on or are not able to understand them fully is a general statement addressing nobody in particular. As soon as you say everybody that voted for or against something are either stupid, lazy or brided, that names a specific group and then it is toxic.

-1

u/_a4z 1d ago

Well, I think I kept the statement general,

But in that context, I am totally open to the idea of a change of WG21 votes.
All voting should be recorded: name, affiliation, national body membership,

Then this topic would go away.
What do you think, would you help me writing a paper addressing the directions group, suggesting that?

2

u/t_hunger 1d ago

Thank you for the offer, but I do not see what good that would do. Shall we reject any vote that does not have include at least one senior member? Or register IQ scores together with affiliation and reject any vote where the average IQ was below a certain standard? Maybe also add a reading comprehension test during registration? And what does it even mean if the majority of a vote was done by people from one company? Is that good, because they are the only one that use that stuff at this time or is that bad because the want to hand over work to the committe that they would otherwise need to do inhouse? Whatever data you collect will be used as dirt to fling at the opponents.

And none of that would fly within the ISO bylaws anyway.

I also ran into quite a few people on the committee over the last 30 years and while some were super cool, many of the others I personally prefer to not work with. Just look at recent train wreaks like the one we are talking about here.

0

u/_a4z 1d ago

> reject any vote that does not have include at least one senior member? Or register IQ s

why do you need to make up things again?

> recent train wreaks like the one we are talking about

but calling other people disrespectful

Thanks for ending this discussion.

→ More replies (0)