← Back to context

Comment by tialaramex

1 month ago

Somebody has a bee in their bonnet about a decision in C++ 20 and so we get a project to "fork" some apparently important C++ library so as to fix everything they don't like about it. It's years of rants about how the modern kids just don't understand, condensed into this one fork proposal, so I guess that's efficient at least.

C++20 did screw up their holy war against volatile augmented assignment. I'm glad they were forced to revert that foolish change. There are people with influence over the committee who genuinely don't have a clue outside their little bubble.

  • Volatile compound assignments are nonsense. This incident is up there with std::span when it comes to illustrating how unserious WG21 are when it comes to improving software quality.

    The deprecation would get you a warning for this nonsense in new C++ versions. It would still compile as before, but you'd get a warning so that maybe you can write something which isn't nonsense instead - an opportunity to express what you actually meant. But this was unacceptable of course.

    You can see some of the same wailing for uninitialized access. Currently draft C++ 26 will just silently initialize your variable to some agreed bit pattern so that you don't incur Undefined Behaviour for uninitialized access by default. This seems to make many of the same people very angry.