[PATCH] D48896: [libcxx][c++17] P0083R5: Splicing Maps and Sets Part 2: merge

Louis Dionne via Phabricator reviews at reviews.llvm.org
Thu Nov 1 07:44:39 PDT 2018

ldionne added inline comments.

Comment at: libcxx/trunk/include/set:710
+    template <class _C2>
mstorsjo wrote:
> This broke certain cases of compilation with mingw-w64 headers, e.g. cases if `<random>` was included before `<set>`.
> The root cause turned out to be that the mingw-w64 header `yvals.h` contains `#define _C2 1`: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/crt/yvals.h#l179
> Similar versions of `yvals.h` from MSVC also contain a similar definition up to as recent as MSVC 2015 (no longer in 2017 though), where it is defined like this:
> ```
> #define _C2                     1       /* 0 if not 2's complement */
> ```
> Given this predecent and the fact that both libcxx and the other platform headers need to cooperate within the namespace of reserved identifiers starting with an underscore, would you consider using a different identifier here?
Fixed in r345834.



More information about the libcxx-commits mailing list