The patch fixes a few issues that arise when using libc++ on Windows.
Specifically:
- The CMake configuration added -Wall to the compilation, which actually means -Weverything in MSVC. This led to several thousand warnings per file.
- The experimental library was enabled by default. It doesn't really work (yet) on Windows, and in fact the build docs suggest to disable it, so I don't think that was a sensible default.
- There were some other errors that caused compilation errors in some of the tests.
I've identified a few other issues, but I'm not sure how best to fix them:
- support/win32/locale_win32.h includes xlocinfo.h, which ends up including yvals_core.h. That MSVC header defines feature test macros, among other things, that clash with macros defined in libc++. This is causing lots of test errors.
- <new> includes the ucrt header new.h in the hope that it'll declare get_new_handler etc. but new.h really just goes back and includes <new>. The end result is that nothing actually gets declared and so we're missing a few declarations, which causes lots of compilation errors.
Couldn't we keep the "-Wall" here? And just add something else that adds "/W4"?
Also, we don't yet support building with MSVC's frontend. Only clang-cl. Does clang-cl not like this existing code?