Avoid conflict with ICU macroizing _No #1570
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#1543 added:
STL/stl/inc/xlocale
Line 3245 in f93cf3a
This conflicts with an ICU header that macroizes
_No
, reported as ICU-21461. This breaks Tensorflow, MySQL, and PDFium in our Real World Code test harness.While ICU should avoid macroizing these reserved identifiers, the STL should avoid breaking RWC, so this PR renames
_No
to_Nope
. We had previously used this identifier in<memory>
, but apparently nobody noticed/complained because no projects were including the conflicting headers in the conflicting order. (There are other conflicts like this:_Pi
in<complex>
,_Cc
in<limits>
, and_Mn
in<regex>
.)For consistency, I am changing all of the
_No
occurrences. I didn't think it was necessary to make_Yes
sound more parallel (_Nope/_Yep
or_Nay/_Yea
or whatever). At this time, I don't think it's necessary for the STL to rename the other conflicting identifiers, since the STL is allowed to use them, and they aren't causing RWC breaks.