top | item 13801778

What's new in C++17, with lots of examples

60 points| jjuhl | 9 years ago |github.com

19 comments

order
[+] trelliscoded|9 years ago|reply
Every time I see one of these new revisions, I can't help but think that the type system has become the roadrunner and the STL has become wile e coyote, complete with dynamite and cartoon physics.

Seriously though, does anyone actually use any of the post-C++-11 stuff? I can count on one hand the times I've seen nonironic use of a C++-11 extension in a real project, and I've never seen use of -14 or -17 extensions.

[+] jnwatson|9 years ago|reply
I've used boost::optional for a long time. It is long overdue in the standard. NULL should almost never be a valid value. It is also quite useful to enable safe lazy initialization without heap allocation.

std::variant is just a discriminated union. That's useful for lots of things.

C++11 is old school at this point. Other than for legacy reasons, no one should be using the older stuff.

[+] quizotic|9 years ago|reply
Most of it seems pretty real-world to me. But if IIUC that std::filesystem means I don't have to write separate code for windows and linux, then it's hard not to imagine EVERYONE using that.
[+] DerDangDerDang|9 years ago|reply
Yes, good C++ programmers use them. By 'good' I mean good enough at their profession to have bothered to pay attention to developments outside of their immediate experience over the last 5-10 years. Which is a pretty low bar, really.
[+] n00b101|9 years ago|reply
> does anyone actually use any of the post-C++-11 stuff

Many major C++ projects are using C++11, e.g. LLVM/Clang, Chromium, etc.

[+] pjmlp|9 years ago|reply
As someone that does Java and .NET consulting, with an ocasional use of C++ on the projects, I would say outside the SV darlings (Google, FB, Microsoft, Apple, ...), sadly very few people do.

While I do try to keep up with the standard, the majority of the code I bump into, on those projects, is still the typical pre-C++98 style and most devs aren't that keen in moving forward.

Specially in projects that are mostly driven by changing consulting company every few budget rounds.

[+] nurettin|9 years ago|reply
Lambda syntax is pretty cumbersome without the use of polymorphic parameters. (introduced after C++11)
[+] jwilk|9 years ago|reply
There's too many people who understand C++, and C++17 is going to fix that.
[+] kevincox|9 years ago|reply
From 7 to 5?
[+] surye|9 years ago|reply
I feel like he went through all this effort just to make the joke "A more perfect union."

But seriously, a great write up. std::any looks like it could be dangerous in the hands of the inexperienced, especially in a sea of other changes that makes working with types easier and safer.

[+] ndh2|9 years ago|reply
What are you talking about? This is C++. Everything can be dangerous.
[+] poofyleek|9 years ago|reply
The "structured bindings" feature seems potentially dangerous. I guess it helps unpacking tuples and getting references to tuple members. But it seems to have opened up a whole new set of side effects.
[+] quinnftw|9 years ago|reply
This is true, though generally anytime one uses `auto` it should be `const auto&` to avoid swallowing the quantifiers and potentially costly copies anyways.
[+] reacharavindh|9 years ago|reply
I wish there was a resource like this for python2 vs python3. I'm trying to switch to Python3.