Łukasz | Wookash Podcast@wookash_podcast
Every now and then, comments like this appear under live coding sessions, and I don't know how to respond.
My view on that matter is:
- all highly skilled people I know are avoiding modern C++
- some use C, some use C++, but those who use C++, they take a tiny subset of features - like operator overloading, or destructors to have "cleanup" mechanics
- none of those people use std::views, std::ranges, std::pair, or even std::unordered_map or std::vector. If they do, they know they make a concession, "I shouldn't do that, compile times and runtime will suffer, I'm doing this cause it's a prototype, not a *real* thing"
What I conclude from these observations is:
- modern C++ is more about fashion than any real gains
- new, competing languages have features like "map, filter, reduce" or string slices and C++ committee generally wants to add features, not remove them
- the implementation of these features in compilers (MSVC, Clang, gcc) is nasty, not because compiler engineers suck, quite contrary, but because those compilers need to care about decades of existing features, syntax expressions, and weird historical constructs
- quick example, for everybody liking lambdas in other languages, will absolutely freak out trying to understand all the possibilities of capture monstrosity with const & reference & pointer and [=] and [*] and move semantics, and damn const reference to a smart pointer which will not update refcount, how far have we strayed from the path.
So my stance is:
- if I invite somebody who loves modern C++ we will talk about how cool things can be expressed, but it will come at the cost of build time and runtime.
If you think this worldview lacks nuance, and should be explored more in depth - reach out or recommend a person who would be a good fit for such a discussion.
We can make a live session geared towards exploring these topics, or organize a small debate (but avoiding drama, a civilized debate!)