String views, same-line nested namespaces, [[fallthrough]], if with init (I'm sure Google single-handedly got this included; it's very Go-reminiscent and really nice when not using exceptions), structured bindings, maybes with std::optional (occasionally useful), and even just something as simple as emplace returning a reference.
What fixes do you think std::move needs, out of curiosity?
This talk explains the pain quite well: https://www.youtube.com/watch?v=PNRju6_yn3o
put a debug breakpoint in the move constructor and run your tests :p
https://dlang.org/concepts.html
You should give D metaprogramming a try. It's a whole new world, a new fantastic point of view.
I think its good all around and balanced languages, but, there is always a better language for any use case, where D is an alternative
Ocaml, if you want performance close to C/C++ plus and high level abstractions
Rust, if you want manual memory managment
C# and Java, if you want large ecosystems and advanced features
Also C++ is now moving and improving fast Even Ada is sort of making a come back
But, I would suggest that investing in Rust might be more valuable for one's career I am learning a bit of ADA, only for educational purposes and to scratch an itch, it is very different from anything I used, and I like that
D development is lively and active. I enjoy the language, and I plan to keep using it as long as I keep enjoying it.
I really like it.
D is kind of the C++ I always wanted. It's familiar, I can see the C++ lineage, and it's so much nicer to write than C++.
I'm currently having fun writing Advent of Code in D:
So modules and concepts were nice to have, but C++17 is already a very good improvement to write such kind of libraries.