Comment by pjmlp

1 day ago

Spot on, since C++11 the committee has increasingly started to design and add features to the standard without any kind of implementation, only after the standard gets ratified, the implementers eventually find out that the design is broken, or has flaws.

A strange phenomenon akin to the Algol 68 days, and no other ISO based language is taking, where standardising existing practice or having a full test implementation is still pretty much what it being done.

How many export templates, GC, type traits defect fixes, volatile behaviour changes, modules, contracts,.... can implementers still put up with?

The committee got burned, extremely badly, by C++03's export templates, where it got standardized without an implementation, and everyone realized it was basically unimplementable, and the only group that did, wrote a paper telling everyone not to [1]

This was well in mind when C++11 came around (especially since C++11 slipped so badly: it was originally "C++0x", and then they ran out of digits for x). By the time we hit C++20, I think the lessons were lost, especially when it came to there being two competing modules implementations and the committee deciding to select neither.

1: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n14...

  • Wow, that paper is absolutely damning.

    > Design: 1.5 years (elapsed) to come up with a design they believed they could implement.

    > Development: 3 person-years (3 people × >1 year each)

    > (Note: By comparison, implementing the complete Java language from scratch took the same team 2 person-years.