[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