[PATCH] D48896: [libcxx][c++17] P0083R5: Splicing Maps and Sets Part 2: merge
Martin Storsjö via Phabricator
reviews at reviews.llvm.org
Thu Nov 1 04:57:56 PDT 2018
mstorsjo added inline comments.
Comment at: libcxx/trunk/include/set:710
+ template <class _C2>
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?
More information about the libcxx-commits