When _LIBCPP_NO_EXCEPTIONS is defined, we end up with compile errors
when targeting MSVCRT:
- Code includes <new>
- <new> includes <cstdlib> in order to get abort
- <cstdlib> includes <stdlib.h>, _before_ the using ::abort
- <stdlib.h> includes locale_win32.h
- locale_win32.h includes <memory>
- <memory> includes <stdexcept>
- <stdexcept> includes <cstdlib for abort, but that inclusion gets (correctly) ignored because of header guards
- <stdexcept> references _VSTD::abort, which isn't declared
The easiest solution is to make locale_win32.h not include <memory>,
by removing the use of unique_ptr and manually restoring the locale
instead.