Is there a specific C++20 feature that requires clang 17?
Until Clang 17, support for C++20 was extremely buggy. I would not recommend that anyone use previous versions in C++20 mode – it’s just not worth the problems.
There were multiple serious issues for consteval, concepts, and other new features. For Google’s internal codebase, these caused problems just trying to switch from -std=c++17 to -std=c++20 – including silent miscompiles. Our codebase didn’t even use C++20 features, we were just switching the compilation mode (which introduced usage of C++20 features via the stdlib headers.)
For reasonable C++20 compiler support, I’ve been making a recommendation of the following minimum compiler versions:
- Clang 17
- GCC 12
- MSVC 17.2
…and don’t use coroutines or modules yet, both of which are not yet fully-baked.
So, this proposal would really only raise the realistic minimum for building LLVM in C++20 mode from “17.0.0” to “17.0.6”.