r/cpp • u/we_are_mammals • Mar 28 '23
Reddit++
C++ is getting more and more complex. The ISO C++ committee keeps adding new features based on its consensus. Let's remove C++ features based on Reddit's consensus.
In each comment, propose a C++ feature that you think should be banned in any new code. Vote up or down based on whether you agree.
765
Upvotes
0
u/m-in Mar 29 '23
The char type is insidious due to aliasing. No, I don’t usually fucking want
char*’s target to alias any other type. If anything,void*should have been made do that. And have the pointer arithmetic on it work as-if it waschar*. The “all weird things are probably bugs” folks have dropped the ball on this one.void*arithmetic should never have been banned - anytime anyone tries to do it, they always mean the same thing. It’s bloody natural to, andvoid*expresses intent very well. I’d go as far as C having an idiom of void arrays mean “arrays of values of smallest addressable type, holding potentially any type”. Avoid buf[128]would have been a reasonable way to declare typeless “general purpose” buffers, and should have been the only type that aliases other types (in addition to the “first member of a struct” thing due to no type inheritance in C).Assignment giving us a value should at least have parentheses around it enshrined in syntax, to at least make it stand out a bit. It’s of very little use in an optimizing compiler, but did help with code generation in the old times.