←back to thread

In Defense of C++

(dayvster.com)
185 points todsacerdoti | 1 comments | | HN request time: 0s | source
Show context
lordleft ◴[] No.45267931[source]
Great article. Modern C++ has come a really long way. I think lots of people have no idea about the newer features of the standard library and how much they minimize footguns.
replies(2): >>45268114 #>>45268712 #
sunshowers ◴[] No.45268114[source]
Lambdas, a modern C++ feature, can borrow from the stack and escape the stack. (This led to one of the more memorable bugs I've been part of debugging.) It's hard to take any claims about modern C++ seriously when the WG thought this was an acceptable feature to ship.

Of course, the article doesn't mention lambdas.

replies(4): >>45268264 #>>45268485 #>>45268512 #>>45274413 #
im3w1l ◴[] No.45268264[source]
Why wouldn't it be acceptable to ship? This is how everything works in C++. You always have to mind your references.
replies(2): >>45268326 #>>45269016 #
sunshowers ◴[] No.45268326[source]
Exactly! This is my problem with the C++ community's culture. At no point is safety put first.
replies(2): >>45268649 #>>45268867 #
StillBored ◴[] No.45268867[source]
Its worse. The day I discovered that std::array is explicitly not range/bounds checked by default I really wanted to write some angry letters to the committee members.

Why go through all the trouble to make a better array, and require the user to call a special .at() function to get range checking rather than the other way around? I promptly went into my standard library and reversed that decision because if i'm going to the trouble to use a C++ array class, it better damn well give me a tiny bit of additional protection. The .at() call should have been the version that reverted to C array behavior without the bounds checking.

And its these kinds of decisions repeated over and over. I get its a committee. Some of the decisions won't be the best, but by 2011 everyone had already been complaining about memory safety issues for 15+ years and there wasn't enough politics on the comittee to recognize that a big reason for using C++ over C was the ability of the language to protect some of the sharper edges of C?

replies(3): >>45271657 #>>45271670 #>>45271759 #
1. mbac32768 ◴[] No.45271657[source]
Good news! Contracts were approved for c++26 so they should be in compilers by like 2031 and then you can configure arrays and vectors to abort on out-of-bounds errors instead of corrupting your program.

Let no one accuse the committee of being unresponsive.