[committed] libstdc++: Add deprecated attributes to old iostream members
Jonathan Wakely
jwakely@redhat.com
Wed Aug 19 12:47:19 GMT 2020
On 19/08/20 12:29 +0100, Jonathan Wakely wrote:
>Back in 2017 I removed these prehistoric members (which were deprecated
>since C++98) for C++17 mode. But I didn't add deprecated attributes to
>most of them, so users didn't get any warning they would be going away.
>Apparently some poor souls do actually use some of these names, and so
>now that GCC 11 defaults to -std=gnu++17 some code has stopped
>compiling.
>
>This adds deprecated attributes to them, so that C++98/03/11/14 code
>will get a warning if it uses them. I'll also backport this to the
>release branches so that users can find out about the deprecation before
>they start using C++17.
>
>In order to give deprecated warnings even in C++98 mode this patch makes
>_GLIBCXX_DEPRECATED work even for C++98, adds _GLIBCXX11_DEPRECATED for
>the old meaning of _GLIBCXX_DEPRECATED, and adds new macros such as
>_GLIBCXX_DEPRECATED_SUGGEST for suggesting alternatives to deprecated
>features.
>
>libstdc++-v3/ChangeLog:
>
> * include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
> standard modes.
> (_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
> message in deprecated warnings.
> (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
> macros for marking features derpecated in C++11.
I'll try to remember to fix the "derpecated" typo in the ChangeLog
tomorrow.
> (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
> New macros.
> * include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
> Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
> (auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
> * include/backward/binders.h (binder1st, binder2nd): Likewise.
> * include/bits/ios_base.h (io_state, open_mode, seek_dir)
> (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
> * include/std/streambuf (stossc): Replace C++11 attribute
> with _GLIBCXX_DEPRECATED_SUGGEST.
> * include/std/type_traits (__is_nullptr_t): Use
> _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
> * testsuite/27_io/types/1.cc: Check for deprecated warnings.
> Also check for io_state, open_mode and seek_dir typedefs.
>
>Tested powerpc64le-linux. Committed to trunk.
The attached patch is the backport I've pushed to the gcc-10 branch,
which only adds the new _GLIBCXX_DEPRECATED_SUGGEST macro and doesn't
enable it for C++98.
The version for gcc-9 is the same but doesn't touch the __is_nullptr_t
trait, because GCC 10.1.0 was the first release to deprecate that.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 5709 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200819/d9e89dea/attachment.bin>
More information about the Gcc-patches
mailing list