As I suggested in D118874.
This is not NFC; if we're worried about the functional changes, I'm willing to split this into an NFC and a cleanup.
In particular I'm not clear on whether we can safely assume, inside src/*.cpp:
- that C++11 is available? Several places use 0 for nullptr, and _LIBCPP_CONSTEXPR for constexpr. Can I fix those?
- that C++20 is available? Could we just use constinit directly instead of _LIBCPP_CONSTINIT, in src/*.cpp?
In the .h files we're at the mercy of the user-programmer and must generally assume C++03, but in src/*.cpp we (that is, our vendors) control the compiler switches.
As @ldionne already pointed out we require C++20 to build the dylib so I would suggest to use constinit here.