[PATCH 2/3] libstdc++: Add deprecation warnings to <strstream> types

Jonathan Wakely jwakely@redhat.com
Thu Jun 20 15:35:53 GMT 2024


Tested x86_64-linux.

-- >8 --

libstdc++-v3/ChangeLog:

	* include/backward/backward_warning.h: Adjust comments to
	suggest <spanstream> as another alternative to <strstream>.
	* include/backward/strstream (strstreambuf, istrstream)
	(ostrstream, strstream): Add deprecated attribute.
---
 .../include/backward/backward_warning.h       | 12 +++++++----
 libstdc++-v3/include/backward/strstream       | 20 +++++++++++++++----
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/libstdc++-v3/include/backward/backward_warning.h b/libstdc++-v3/include/backward/backward_warning.h
index 3f3330327d4..834fc5680cc 100644
--- a/libstdc++-v3/include/backward/backward_warning.h
+++ b/libstdc++-v3/include/backward/backward_warning.h
@@ -40,10 +40,14 @@
   A list of valid replacements is as follows:
 
   Use:					Instead of:
-  <sstream>, basic_stringbuf	   	<strstream>, strstreambuf
-  <sstream>, basic_istringstream	<strstream>, istrstream
-  <sstream>, basic_ostringstream	<strstream>, ostrstream
-  <sstream>, basic_stringstream		<strstream>, strstream
+  <sstream>, stringbuf
+    or <spanstream>, spanbuf		<strstream>, strstreambuf
+  <sstream>, istringstream
+    or <spanstream>, ispanstream	<strstream>, istrstream
+  <sstream>, ostringstream
+    or <spanstream>, ospanstream	<strstream>, ostrstream
+  <sstream>, stringstream
+    or <spanstream>, spanstream		<strstream>, strstream
   <unordered_set>, unordered_set     	<ext/hash_set>, hash_set
   <unordered_set>, unordered_multiset	<ext/hash_set>, hash_multiset
   <unordered_map>, unordered_map	<ext/hash_map>, hash_map
diff --git a/libstdc++-v3/include/backward/strstream b/libstdc++-v3/include/backward/strstream
index 152e93767f6..5e421143385 100644
--- a/libstdc++-v3/include/backward/strstream
+++ b/libstdc++-v3/include/backward/strstream
@@ -57,6 +57,12 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+#if __glibcxx_spanstream
+# define _GLIBCXX_STRSTREAM_DEPR(A, B) _GLIBCXX_DEPRECATED_SUGGEST(A "' or '" B)
+#else
+# define _GLIBCXX_STRSTREAM_DEPR(A, B) _GLIBCXX_DEPRECATED_SUGGEST(A)
+#endif
+
   // Class strstreambuf, a streambuf class that manages an array of char.
   // Note that this class is not a template.
   class strstreambuf : public basic_streambuf<char, char_traits<char> >
@@ -151,7 +157,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     bool _M_dynamic  : 1;
     bool _M_frozen   : 1;
     bool _M_constant : 1;
-  };
+  } _GLIBCXX_STRSTREAM_DEPR("std::stringbuf", "std::spanbuf");
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 
   // Class istrstream, an istream that manages a strstreambuf.
   class istrstream : public basic_istream<char>
@@ -176,7 +185,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   private:
     strstreambuf _M_buf;
-  };
+  } _GLIBCXX_STRSTREAM_DEPR("std::istringstream", "std::ispanstream");
 
   // Class ostrstream
   class ostrstream : public basic_ostream<char>
@@ -201,7 +210,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   private:
     strstreambuf _M_buf;
-  };
+  } _GLIBCXX_STRSTREAM_DEPR("std::ostringstream", "std::ospanstream");
 
   // Class strstream
   class strstream : public basic_iostream<char>
@@ -231,7 +240,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   private:
     strstreambuf _M_buf;
-  };
+  } _GLIBCXX_STRSTREAM_DEPR("std::stringstream", "std::spanstream");
+
+#undef _GLIBCXX_STRSTREAM_DEPR
+#pragma GCC diagnostic pop
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
-- 
2.45.2



More information about the Gcc-patches mailing list