Add escape hatches for source-breaking throughput improvements #3027
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.
Originally,
_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGSwas the escape hatch to allow<hash_map>and<hash_set>to be included. #2996 extended this to restore<xhash>'s inclusion of<cstring>/<cwchar>/<xstring>and defining commonstdextmachinery. However, I attempted to unconditionally remove the non-Standard using-declaration that providedstd::hash_compare. Unfortunately, there are still projects depending on this. 😿 We can preserve the throughput improvement and give affected projects a way out by extending the escape hatch to also provide the using-declaration.Also, #2998 got
<functional>to stop including<memory>in C++17 mode. We're seeing at least one affected project (Qt5) where fixing the source may be difficult. We can add a targeted escape hatch for this inclusion, again preserving the throughput improvement by default.