This doesn't answer your question. I don't have an answer to your question. But I thought some people may find it interesting why I don't have an answer:
I used to use C for some performance critical backend projects a while back but I explicitly avoid C++ because I don't think it is constrained enough and tends to lead to writing code that has side effects. I prefer the "simplicity" of C if I'm going to have a lower level language where I need to memory manage myself.
With that said, the projects I used to use C in are now mostly Go. It has acceptable performance for my use cases and has better memory management and easier concurrency.
One thing I struggle with is I think C++ still has some of the best libraries for certain tasks, especially around GUIs and games. But neither of those are things I work in regularly.
Your last paragraph: I agree with C++ w/ GUIs if you need crazy performance -- oil and gas exploration, medical imaging, etc. If your user is internal / big-corpo, then Java Swing or C#/XAML is totally underrated and boosts developer productivity by many-X. Ugly UI is fine in these cases. I know this from experience. Have you used any of these and what is your experience?
I've been at it for 20 years and I've tried a TON of stuff.
.NET is a perfectly reasonable -- dare I say enjoyable -- way to go if your systems are already configured to support it and you control the hardware you are running on.
The .NET toolchain for compiling and installing .NET apps if you're not already in the Windows ecosystem was -- last time I tried, which admittedly was a while ago -- very clunky compared to C/C++ tooling.
Qt is very good (but VERY expensive if you're not Open Source) for C/C++ and I've used GTK for Linux.
Java is pretty good at GUI but then you're taking on Java's other quircks / bloat. similar to .NET but worse.
I've also tried Flutter and Electron. Both have their pros and cons. But writing the low-level code in something like Go, compiling to a shared library, and linking it with Flutter is a workflow I somewhat like for desktop. That's what I'm doing for some of my newer apps.
But the reason I left that comment is my experience with C/C++ in GUI development has been the most positive so far (usually using Qt). C/C++ have just been around so ridiculously long and had so many tools written for them. But take it with a huge grain of salt since I'm in an industry where more times than not the primary GUI is in a web browser so I don't deal with non-browser GUIs every day.
This is a great reply. Thank you for the interesting feedback about a huge number of GUI toolkits. I /thought/ I was experienced with GUI frameworks until I read this post!
I also have a "soft spot" (personal preference) for Qt. Part of that is C++, part of that is small company "makes it big". Their documentation is absolutely first class. They only need to add more screenshots to improve the docs. (Facepalm... really, I should do that myself via PRs on their open source repo!) They should also allow people to submit sample code to demo each class -- or do it themselves. Yes, I know it is a huge burden, but it would serious lower the barrier for entry. So much of enterprise GUI programming is write sample code, inspect GUI, repeat. Modern GUIs are so incredibly complex that nothing can replace a set of tiny demos you can run and test / try different GUI features.
I used to use C for some performance critical backend projects a while back but I explicitly avoid C++ because I don't think it is constrained enough and tends to lead to writing code that has side effects. I prefer the "simplicity" of C if I'm going to have a lower level language where I need to memory manage myself.
With that said, the projects I used to use C in are now mostly Go. It has acceptable performance for my use cases and has better memory management and easier concurrency.
One thing I struggle with is I think C++ still has some of the best libraries for certain tasks, especially around GUIs and games. But neither of those are things I work in regularly.