Posted by cemdervis 5 days ago
I have created a webpage that displays all C++ features since C++20 in a simple, searchable table.
It is intended to serve as a quick reference for C++ developers, whether as support for cross-platform development or simply to track the current support status out of curiosity.
I created it as a simpler, more structured, and more up-to-date alternative to the cppreference compiler support site. Please note that the page intentionally does not list LWG and CWG papers. This might change as I am continually updating the site and trying out new ideas.
Questions, feedback and suggestions are appreciated, either here or in the form of GitHub issues.
Personally I am not not sure the live search on this new page saves me time, but perhaps if you added the ability to only show missing features it could be useful. For example if I could pick that I am interested in c++23 and earlier and that I use gcc-14 and clang-16 it should list the features that won't work for me. That would be useful compared to trying to scan the full list.
Then I wrote a bot that watches all known (and most importantly, reliable) sources for changes, that then notifies me. The data itself is kept in very simple yaml files. So whenever something changes, I verify and update the info accordingly (The site itself is then regenerated and uploaded automatically).
For features that are not fully implemented yet, or where the vendor does not provide any information (e.g. Apple's conformance table), I set up a conformance test suite on my machine that runs most of these across all toolchains.
Please note that I won't be the only person that maintains this site. I'm in the process of open-sourcing and automating most of it, so that everyone can contribute via GitHub. It's just that keeping up with C++ is part of my job, and also a personal interest of mine. So I do this as a "labour of love".
I lost a bunch of my evening to gcc refusing to find glibc headers and the docs wouldn't have helped me there. I did find a wontfix bugzilla from 2020 though, so that's nice.
The alternative would be to start stoically writing test programs and gradually reinvent part of autotools. Maybe run your conformance tests on the platforms that do have docs as well. Sounds like you may already be doing that :)
Feature names tend not to be very approachable. They often use very precise terminology or refer to papers with names that are targeted for a very in-the-know population.
As an example, one of the features listed is '`constexpr` `std::shared_ptr` and friends'. You seem to have a search that can cope with backticks but this feature doesn't show up if I search for 'constexpr shared_ptr'. That can be solved technically, but the bigger problem is that this feature also changes things for `weak_ptr` - or 'smart pointers' as a concept.
I can't picture a situation where I end up wanting to know the status of that feature's implementation in isolation.
For what it's worth, cppreference isn't any better at this, since it doesn't have any notes on the addition of support for `constexpr`ness of either pointer type. But with enough will I can change that.
As for feature names: I agree that the paper titles tend to be very technical / niche. However, I didn't want to distort them and rename them, since the site is targeted at the in-the-know population you've mentioned. Do you have an idea how this could be improved?
Regarding the search: This is something I'm working on improving, so that coarse searches like "constexp sharedptr" would correctly yield the constexpr std::shared_ptr proposal.
Then there are whole industries where only C, C++ and Assembly matter, including standards, so it will take a while for new contenders to be taken seriously on such industries.
There are not enough oldtimers alive to do it, and the younger guys refuse to learn it. That drove up the hourly salaries enormously.
You're not going to find some hobbyist coming up with a useful conformance or coverage test suite for free. It's intensive, expensive, and arduous.
Such things are mandatory, however, if you are a C++ vendor targeting ISO 26262 or IEC 61508 or similar -- basically, software that could kill you if it's done wrong. It's a niche with money and motivation.