From a74bc411bce0cdc1801574e5d2b4fa3fb143b0ee Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 25 Jul 2017 18:47:52 +0100 Subject: [PATCH] Remove deprecated iostream members for C++17 * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode) (ios_base::seek_dir): Remove for C++17. * include/std/streambuf (basic_streambuf::stossc): Remove for C++17. Add deprecated attribute for C++11 and C++14. * testsuite/27_io/types/1.cc: Don't run for C++17 and later. * testsuite/27_io/types/4.cc: New. From-SVN: r250531 --- libstdc++-v3/ChangeLog | 9 ++++++++ libstdc++-v3/include/bits/ios_base.h | 4 +++- libstdc++-v3/include/std/streambuf | 7 ++++-- libstdc++-v3/testsuite/27_io/types/1.cc | 8 ++----- libstdc++-v3/testsuite/27_io/types/4.cc | 29 +++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 libstdc++-v3/testsuite/27_io/types/4.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0a875971771..6e5d2f988a8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2017-07-25 Jonathan Wakely + + * include/bits/ios_base.h (ios_base::io_state, ios_base::open_mode) + (ios_base::seek_dir): Remove for C++17. + * include/std/streambuf (basic_streambuf::stossc): Remove for C++17. + Add deprecated attribute for C++11 and C++14. + * testsuite/27_io/types/1.cc: Don't run for C++17 and later. + * testsuite/27_io/types/4.cc: New. + 2017-07-23 Michael Collison Add optimized implementation of mersenne twister for aarch64 diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h index e5a107db4bc..e68b4305517 100644 --- a/libstdc++-v3/include/bits/ios_base.h +++ b/libstdc++-v3/include/bits/ios_base.h @@ -469,13 +469,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Request a seek relative to the current end of the sequence. static const seekdir end = _S_end; - // Annex D.6 +#if __cplusplus <= 201402L + // Annex D.6 (removed in C++17) typedef int io_state; typedef int open_mode; typedef int seek_dir; typedef std::streampos streampos; typedef std::streamoff streamoff; +#endif // Callbacks; /** diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf index 862c4fdbe6d..a05b46e8199 100644 --- a/libstdc++-v3/include/std/streambuf +++ b/libstdc++-v3/include/std/streambuf @@ -768,8 +768,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION overflow(int_type __c = traits_type::eof()) { return traits_type::eof(); } -#if _GLIBCXX_USE_DEPRECATED - // Annex D.6 +#if _GLIBCXX_USE_DEPRECATED && __cplusplus <= 201402L + // Annex D.6 (removed in C++17) public: /** * @brief Tosses a character. @@ -779,6 +779,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html */ +#if __cplusplus >= 201103L + [[__deprecated__("stossc is deprecated, use sbumpc instead")]] +#endif void stossc() { diff --git a/libstdc++-v3/testsuite/27_io/types/1.cc b/libstdc++-v3/testsuite/27_io/types/1.cc index 88f6ff868d7..0756f8a1709 100644 --- a/libstdc++-v3/testsuite/27_io/types/1.cc +++ b/libstdc++-v3/testsuite/27_io/types/1.cc @@ -15,6 +15,8 @@ // with this library; see the file COPYING3. If not see // . +// { dg-do compile { target c++14_down } } + // 27.4.2.1 - Types [lib.ios.types] #include @@ -27,9 +29,3 @@ void test01() typedef std::ios_base::streampos streampos_type; typedef std::ios_base::streamoff streamoff_type; } - -int main(void) -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/types/4.cc b/libstdc++-v3/testsuite/27_io/types/4.cc new file mode 100644 index 00000000000..ee1a77736ce --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/types/4.cc @@ -0,0 +1,29 @@ +// Copyright (C) 2017 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++17" } +// { dg-do compile { target c++1z } } + +// In C++17 these names are not reserved by the library. +#define io_state 1 +#define open_mode 2 +#define seek_dir 3 +#define stossc 4 +#include + +template class std::basic_streambuf; +template class std::basic_streambuf; -- 2.30.2