Trip report: Autumn ISO C++ standards meeting (Kona, HI, USA)
herbsutter.com
herbsutter.com
Contacts: yes please. Variadic indexing is one of those things everyone writes their own helper for. But this standard facility is very welcome indeed.
Some additions seem a bit of of scope for the standard of a language that famously refuses to fix mistakes. So in weary about std::hive, networking, physical units.
And an underrated cherry is at the end: cleaning up those "ill formed, no diagnostic required" clauses in the standard. For those who don't know: there are things forbidden in the standard which the compiler is allowed to not tell you (because it's difficult for the compiler to prove it). In particular this is omnipresent in the constexpr world. Leading to silly redundant code that manually assets things to explicitly trigger the compiler to check for errors.
However at least we already have a kind of poor man's reflection, with constexpr if + concepts + type traits.
As for the rest, I am also not a big fan, but until my favourite language runtimes and GPGPU tools switch to something else, C++ is part of the toolbox. No need to add even more layers.
It allowed me to write for instance https://GitHub.com/celtera/avendish which keeps on giving. The last version even add automatic field name reflection which is huge: https://www.boost.org/doc/libs/master/doc/html/boost_pfr/tut...
Nowadays I get the feeling to need some kind of memory dump reload everytime I switch projects.
C++, the unparalleled language for writing fast libraries, is a complex beast.
C++, the sort of decent language with footguns for using said libraries, is getting more and more simpler over the years.
As long as the creators of other languages, including so-called C "successor" languages, keep giving zero shits about language interoperability and prefer to play in their little sandboxes that they've created for themselves instead of collaborating on creating a language-agnostic ABI, the C ABI will remain the ABI Franca, so C will stay relevant.
As long as C (and C++) are the only languages that you can compile and link the way you see fit as opposed to caving in to some my-way-or-the-highway language-specific "fully integrated" dependency manager and build system, C will stay relevant.
As long as this lack of vision, this pathological shortsightedness, and this complete disinterest in taking any steps whatsoever to unseat C from its privileged niche and create an ecosystem in which "successor" languages can compete with C on a level playing field continues to dominate the entire industry and every single "language" community in existence, C will stay relevant.
I think pretty much all languages are hoping that that native ABI cesspool just disappears. I don't have a solution to that problem, but I know the solution isn't to keep on truckin' with uninitialized data, out-of-bounds-memory accesses, stack overflows, and undefined behavior. Surely we can do better.
With the number of complex and obscure features that C++ has, it surprises me it has taken this long to implement such obvious features as "enum to string", and "insert a breakpoint here".
It was previously used by Microsoft for their C++/CLR (or C++/CLI) to mark garbage collected values. But that was after the type, not in front iirc.
[0]: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p29...