The State Of C++20 Features In GCC's libstdc++

As part of getting the documentation squared away for the upcoming GCC 9.1 release, committed today was the documentation showing the status of the C++20 support within their libstdc++ C++ standard library.
Besides the GNU Compiler Collection itself moving along with its preliminary C++20 features, the libstdc++ library has also been working to stay in-step as new functionality gets worked out for this next planned update to the C++ programming language.
As implied by the name, with C++20 not coming out for another year at least, GCC 9.1 obviously won't have full support for it yet with various technical specifications still being discussed. C++20 is bringing many changes like ranges, a revised memory model, potentially modules / coroutines / transactional memory, and other additions.
On the library side, committed today was the current look at libstdc++ support. That new documentation added can be viewed here.
It shows that for GCC 9.1, libstdc++ picked up some library features like string prefix and suffix checking, remove_cvref transformation trait, integral power-of-2 operations, improving the return value of erase-like algorithms, efficient sized delete for variable sized classes, std::is_constant_evaluated(), and other additions.
But a majority of the planned C++20 library technical specifications remain yet to be implemented. Look for more of the C++20 support from the compiler and standard library to be fleshed out for next year's GCC 10 release. The experimental support in GCC 9 can be tapped with the -std=c++2a switch.
5 Comments