It's been a while since I last wrote about C++ Insights. Sorry for that. No worries, I still actively maintain the project.
Switch on C++23
Last week I took two days to push C++ Insights a bit forward. It now uses Clang 13! With that change I moved the C++20 switch from
-std=c++20. In addition there is now a new option
-std=c++2b for early C++23 support.
Under the hood, I refactored several things. Among that is start using C++20 features like Concepts :-) Sadly ranges are not in the shape I need them, nor
std::format, but it looks like they both will be with Clang 14.
The default standard for the web frontend is now C++20.
Windows with Visual Studio 2022
For the Windows build, I switched the GitHub action to Windows Server 2022 (I think that's what they call it). With this switch came Visual Studio 2022. A good improvement, as a lot of the error messages from Clang headers, are now gone! Thanks to some people on Twitter, I managed to get rid of other compiler warnings.
Fixing structured bindings n of m
Structured bindings have been a recurring source of errors. I didn't count how often I've tried to fix them so far. I hope I'm now pretty close to correct. Fixing #425 gave me some more insights after studying the wording in the standard for multiple hours and checking the implementation of Clang. I still might be wrong due to a misunderstanding or misinterpretation. If you know more than me, please let me know.
Reducing the number of open issues
I also managed to reduce the number of open issues a bit. One example was #425 above. Some are still open as I need more time to investigate them.
I added a new transformation which shows the compiler injected
return 0 in
main if we fall off the control flow without saying
return ourselves. The upcoming February episode of C++ Insights YouTube will show the transformation in more detail.
Support the project