Emit 'MS extension' deprecation warnings in all Standard modes #4605
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.
There are three Microsoft extensions that we've deprecated, with the intent of eventually removing them:
<iterator>
: Modernize and deprecate(un)checked_array_iterator
#3818<cvt/meow>
headers #3924<istream>
,<ostream>
: Deprecate pre-Standardipfx
,isfx
,opfx
, andosfx
functions #4006<random>
: Deprecate TR1 components in thestd
namespace #4284Currently, these deprecations are activated by C++17 mode, but there's no real justification for that. It was practically convenient, because leaving C++14 mode unaffected limited the source-breaking impact on legacy codebases that we immediately had to deal with. However, if we really want to remove this machinery, we need to warn C++14 users. Fortunately, some ecosystem cleanup has already occurred (e.g. Qt stopped using
stdext::checked_array_iterator
and backported that to their various release branches) since usage of C++17 and later is somewhat popular. Deprecating and removing things always requires effort, but by "fractionating the dose" we can spread out the impact over releases. This is the next step.This PR changes these MS deprecations to be unconditionally emitted, but still with their fine-grained and coarse-grained
_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS
escape hatches.