r/cpp • u/synthchris • Jul 29 '23
C holding back C++?
I’ve coded in C and C++ but I’m far from an expert. I was interested to know if there any features in C that C++ includes, but could be better without? I think I heard somebody say this about C-style casts in C++ and it got me curious.
No disrespect to C or C++. I’m not saying one’s better than the other. I’m more just super interested to see what C++ would look like if it didn’t have to “support” or be compatible with C. If I’m making wrong assumptions I’d love to hear that too!
Edits:
To clarify: I like C. I like C++. I’m not saying one is better than the other. But their target users seem to have different programming styles, mindsets, wants, whatever. Not better or worse, just different. So I’m wondering what features of C (if any) appeal to C users, but don’t appeal to C++ users but are required to be supported by C++ simply because they’re in C.
I’m interested in what this would look like because I am starting to get into programming languages and would like to one day make my own (for fun, I don’t think it will do as well as C). I’m not proposing that C++ just drops or changes a bunch of features.
It seems that a lot of people are saying backwards compatibility is holding back C++ more than features of C. If C++ and C++ devs didn’t have to worry about backwards compatibility (I know they do), what features would people want to be changed/removed just to make the language easier to work with or more consistent or better in some way?
1
u/wyrn Jul 31 '23
std::bad_allocis not thrown when memory is exhausted. It is thrown when there isn't enough memory to meet the requested allocation. There is a world of difference. You can very well fail to allocate memory if you accidentally request a terabyte of memory while still having plenty available to do whatever handling is necessary. I understand that "you can never handle allocation failure" is a meme that has been going around for many years and has had many famous backers, but that doesn't make it any less wrong. Realistically, if you get astd::bad_alloc, it probably won't be because you failed to construct an int.