* [committed 1/2] libstdc++: Add <syncstream> declarations to <iosfwd> [PR105284]
@ 2022-05-10 15:43 Jonathan Wakely
2022-05-10 15:43 ` [committed 2/2] libstdc++: Add <spanstream> " Jonathan Wakely
0 siblings, 1 reply; 2+ messages in thread
From: Jonathan Wakely @ 2022-05-10 15:43 UTC (permalink / raw)
To: libstdc++, gcc-patches
Tested powerpc64le-linux, pushed to trunk.
-- >8 --
libstdc++-v3/ChangeLog:
PR libstdc++/105284
* include/std/iosfwd: Add declarations for <synstream> class
templates and typedefs.
* include/std/syncstream (basic_syncbuf, basic_osyncstream):
Remove default template arguments.
* testsuite/27_io/headers/iosfwd/synopsis.cc: New test.
* testsuite/27_io/headers/iosfwd/types.cc: New test.
---
libstdc++-v3/include/std/iosfwd | 18 ++
libstdc++-v3/include/std/syncstream | 6 +-
| 119 ++++++++++
| 214 ++++++++++++++++++
4 files changed, 353 insertions(+), 4 deletions(-)
create mode 100644 libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
create mode 100644 libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
diff --git a/libstdc++-v3/include/std/iosfwd b/libstdc++-v3/include/std/iosfwd
index 2d79a131631..c8c67c86c3b 100644
--- a/libstdc++-v3/include/std/iosfwd
+++ b/libstdc++-v3/include/std/iosfwd
@@ -207,6 +207,24 @@ _GLIBCXX_END_NAMESPACE_CXX11
/// Class for @c wchar_t mixed input and output file streams.
typedef basic_fstream<wchar_t> wfstream;
#endif
+
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Allocator = allocator<_CharT>>
+ class basic_syncbuf;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Allocator = allocator<_CharT>>
+ class basic_osyncstream;
+
+ using syncbuf = basic_syncbuf<char>;
+ using osyncstream = basic_osyncstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+ using wsyncbuf = basic_syncbuf<wchar_t>;
+ using wosyncstream = basic_osyncstream<wchar_t>;
+#endif
+#endif // C++20 && CXX11_ABI
+
/** @} */
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/syncstream b/libstdc++-v3/include/std/syncstream
index 3cf2296f723..7a4f731ddd9 100644
--- a/libstdc++-v3/include/std/syncstream
+++ b/libstdc++-v3/include/std/syncstream
@@ -50,8 +50,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
- template<typename _CharT, typename _Traits = char_traits<_CharT>,
- typename _Alloc = allocator<_CharT>>
+ template<typename _CharT, typename _Traits, typename _Alloc>
class basic_syncbuf : public __syncbuf_base<_CharT, _Traits>
{
public:
@@ -241,8 +240,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__mutex _M_mtx;
};
- template <typename _CharT, typename _Traits = char_traits<_CharT>,
- typename _Alloc = allocator<_CharT>>
+ template <typename _CharT, typename _Traits, typename _Alloc>
class basic_osyncstream : public basic_ostream<_CharT, _Traits>
{
using __ostream_type = basic_ostream<_CharT, _Traits>;
--git a/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
new file mode 100644
index 00000000000..48f733bf28a
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
@@ -0,0 +1,119 @@
+// { dg-do compile }
+
+#include <iosfwd>
+
+namespace std
+{
+ // [iosfwd.syn]
+
+ template<class charT> struct char_traits;
+ template<> struct char_traits<char>;
+#if __cplusplus >= 202002L
+ template<> struct char_traits<char8_t>;
+#endif
+#if __cplusplus >= 201103L
+ template<> struct char_traits<char16_t>;
+ template<> struct char_traits<char32_t>;
+#endif
+ template<> struct char_traits<wchar_t>;
+
+ template<class T> class allocator;
+
+ template<class charT, class traits>
+ class basic_ios;
+ template<class charT, class traits>
+ class basic_streambuf;
+ template<class charT, class traits>
+ class basic_istream;
+ template<class charT, class traits>
+ class basic_ostream;
+ template<class charT, class traits>
+ class basic_iostream;
+
+_GLIBCXX_BEGIN_NAMESPACE_CXX11
+ template<class charT, class traits, class Allocator>
+ class basic_stringbuf;
+ template<class charT, class traits, class Allocator>
+ class basic_istringstream;
+ template<class charT, class traits, class Allocator>
+ class basic_ostringstream;
+ template<class charT, class traits, class Allocator>
+ class basic_stringstream;
+_GLIBCXX_END_NAMESPACE_CXX11
+
+ template<class charT, class traits>
+ class basic_filebuf;
+ template<class charT, class traits>
+ class basic_ifstream;
+ template<class charT, class traits>
+ class basic_ofstream;
+ template<class charT, class traits>
+ class basic_fstream;
+
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+ template<class charT, class traits, class Allocator>
+ class basic_syncbuf;
+ template<class charT, class traits, class Allocator>
+ class basic_osyncstream;
+#endif
+
+ template<class charT, class traits>
+ class istreambuf_iterator;
+ template<class charT, class traits>
+ class ostreambuf_iterator;
+
+ typedef basic_ios<char> ios;
+ typedef basic_ios<wchar_t> wios;
+
+ typedef basic_streambuf<char> streambuf;
+ typedef basic_istream<char> istream;
+ typedef basic_ostream<char> ostream;
+ typedef basic_iostream<char> iostream;
+
+ typedef basic_stringbuf<char> stringbuf;
+ typedef basic_istringstream<char> istringstream;
+ typedef basic_ostringstream<char> ostringstream;
+ typedef basic_stringstream<char> stringstream;
+
+
+ typedef basic_filebuf<char> filebuf;
+ typedef basic_ifstream<char> ifstream;
+ typedef basic_ofstream<char> ofstream;
+ typedef basic_fstream<char> fstream;
+
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+ typedef basic_syncbuf<char> syncbuf;
+ typedef basic_osyncstream<char> osyncstream;
+#endif
+
+ typedef basic_streambuf<wchar_t> wstreambuf;
+ typedef basic_istream<wchar_t> wistream;
+ typedef basic_ostream<wchar_t> wostream;
+ typedef basic_iostream<wchar_t> wiostream;
+
+ typedef basic_stringbuf<wchar_t> wstringbuf;
+ typedef basic_istringstream<wchar_t> wistringstream;
+ typedef basic_ostringstream<wchar_t> wostringstream;
+ typedef basic_stringstream<wchar_t> wstringstream;
+
+ typedef basic_filebuf<wchar_t> wfilebuf;
+ typedef basic_ifstream<wchar_t> wifstream;
+ typedef basic_ofstream<wchar_t> wofstream;
+ typedef basic_fstream<wchar_t> wfstream;
+
+#if __cplusplus >= 202002L
+ typedef basic_syncbuf<wchar_t> wsyncbuf;
+ typedef basic_osyncstream<wchar_t> wosyncstream;
+#endif
+
+ template<class state> class fpos;
+ typedef fpos<std::mbstate_t> streampos;
+ typedef fpos<std::mbstate_t> wstreampos;
+#if __cplusplus >= 202002L
+ typedef fpos<std::mbstate_t> u8streampos;
+#endif
+#if __cplusplus >= 201103L
+ typedef fpos<std::mbstate_t> u16streampos;
+ typedef fpos<std::mbstate_t> u32streampos;
+#endif
+}
--git a/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc b/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
new file mode 100644
index 00000000000..e2c9c9b8dfa
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
@@ -0,0 +1,214 @@
+// { dg-do compile { target c++11 } }
+
+#include <iosfwd>
+
+template<class, class> struct Same { static constexpr bool value = false; };
+template<class T> struct Same<T, T> { static constexpr bool value = true; };
+
+template<class T> using Traits = std::char_traits<T>;
+template<class T> using Alloc = std::allocator<T>;
+
+using std::basic_ios;
+
+static_assert(Same<basic_ios<char>,
+ basic_ios<char, Traits<char>>
+ >::value,
+ "std::basic_ios<char> has the correct default template argument");
+
+static_assert(Same<basic_ios<wchar_t>,
+ basic_ios<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ios<wchar_t> has the correct default template argument");
+
+using std::basic_streambuf;
+
+static_assert(Same<basic_streambuf<char>,
+ basic_streambuf<char, Traits<char>>
+ >::value,
+ "std::basic_streambuf<char> has the correct default template argument");
+
+static_assert(Same<basic_streambuf<wchar_t>,
+ basic_streambuf<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_streambuf<wchar_t> has the correct default template argument");
+
+using std::basic_istream;
+
+static_assert(Same<basic_istream<char>,
+ basic_istream<char, Traits<char>>
+ >::value,
+ "std::basic_istream<char> has the correct default template argument");
+
+static_assert(Same<basic_istream<wchar_t>,
+ basic_istream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_istream<wchar_t> has the correct default template argument");
+
+using std::basic_ostream;
+
+static_assert(Same<basic_ostream<char>,
+ basic_ostream<char, Traits<char>>
+ >::value,
+ "std::basic_ostream<char> has the correct default template argument");
+
+static_assert(Same<basic_ostream<wchar_t>,
+ basic_ostream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ostream<wchar_t> has the correct default template argument");
+
+using std::basic_iostream;
+
+static_assert(Same<basic_iostream<char>,
+ basic_iostream<char, Traits<char>>>::value,
+ "std::basic_iostream<char> has the correct default template argument");
+
+static_assert(Same<basic_iostream<wchar_t>,
+ basic_iostream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_iostream<wchar_t> has the correct default template argument");
+
+using std::basic_stringbuf;
+
+static_assert(Same<basic_stringbuf<char>,
+ basic_stringbuf<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_stringbuf<char> has the correct default template argument");
+
+static_assert(Same<basic_stringbuf<wchar_t>,
+ basic_stringbuf<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_stringbuf<wchar_t> has the correct default template argument");
+
+using std::basic_istringstream;
+
+static_assert(Same<basic_istringstream<char>,
+ basic_istringstream<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_istringstream<char> has the correct default template argument");
+
+static_assert(Same<basic_istringstream<wchar_t>,
+ basic_istringstream<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_istringstream<wchar_t> has the correct default template argument");
+
+using std::basic_ostringstream;
+
+static_assert(Same<basic_ostringstream<char>,
+ basic_ostringstream<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_ostringstream<char> has the correct default template argument");
+
+static_assert(Same<basic_ostringstream<wchar_t>,
+ basic_ostringstream<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_ostringstream<wchar_t> has the correct default template argument");
+
+using std::basic_stringstream;
+
+static_assert(Same<basic_stringstream<char>,
+ basic_stringstream<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_stringstream<char> has the correct default template argument");
+
+static_assert(Same<basic_stringstream<wchar_t>,
+ basic_stringstream<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_stringstream<wchar_t> has the correct default template argument");
+
+using std::basic_filebuf;
+
+static_assert(Same<basic_filebuf<char>,
+ basic_filebuf<char, Traits<char>>
+ >::value,
+ "std::basic_filebuf<char> has the correct default template argument");
+
+static_assert(Same<basic_filebuf<wchar_t>,
+ basic_filebuf<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_filebuf<wchar_t> has the correct default template argument");
+
+using std::basic_ifstream;
+
+static_assert(Same<basic_ifstream<char>,
+ basic_ifstream<char, Traits<char>>
+ >::value,
+ "std::basic_ifstream<char> has the correct default template argument");
+
+static_assert(Same<basic_ifstream<wchar_t>,
+ basic_ifstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ifstream<wchar_t> has the correct default template argument");
+
+using std::basic_ofstream;
+
+static_assert(Same<basic_ofstream<char>,
+ basic_ofstream<char, Traits<char>>
+ >::value,
+ "std::basic_ofstream<char> has the correct default template argument");
+
+static_assert(Same<basic_ofstream<wchar_t>,
+ basic_ofstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ofstream<wchar_t> has the correct default template argument");
+
+using std::basic_fstream;
+
+static_assert(Same<basic_fstream<char>,
+ basic_fstream<char, Traits<char>>
+ >::value,
+ "std::basic_fstream<char> has the correct default template argument");
+
+static_assert(Same<basic_fstream<wchar_t>,
+ basic_fstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_fstream<wchar_t> has the correct default template argument");
+
+#if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+using std::basic_syncbuf;
+
+static_assert(Same<basic_syncbuf<char>,
+ basic_syncbuf<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_syncbuf<char> has the correct default template argument");
+
+static_assert(Same<basic_syncbuf<wchar_t>,
+ basic_syncbuf<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_syncbuf<wchar_t> has the correct default template argument");
+
+using std::basic_osyncstream;
+
+static_assert(Same<basic_osyncstream<char>,
+ basic_osyncstream<char, Traits<char>, Alloc<char>>
+ >::value,
+ "std::basic_osyncstream<char> has the correct default template argument");
+
+static_assert(Same<basic_osyncstream<wchar_t>,
+ basic_osyncstream<wchar_t, Traits<wchar_t>, Alloc<wchar_t>>
+ >::value,
+ "std::basic_osyncstream<wchar_t> has the correct default template argument");
+#endif
+
+using std::istreambuf_iterator;
+
+static_assert(Same<istreambuf_iterator<char>,
+ istreambuf_iterator<char, Traits<char>>
+ >::value,
+ "std::istreambuf_iterator<char> has the correct default template argument");
+
+static_assert(Same<istreambuf_iterator<wchar_t>,
+ istreambuf_iterator<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::istreambuf_iterator<wchar_t> has the correct default template argument");
+
+using std::ostreambuf_iterator;
+
+static_assert(Same<ostreambuf_iterator<char>,
+ ostreambuf_iterator<char, Traits<char>>
+ >::value,
+ "std::ostreambuf_iterator<char> has the correct default template argument");
+
+static_assert(Same<ostreambuf_iterator<wchar_t>,
+ ostreambuf_iterator<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::ostreambuf_iterator<wchar_t> has the correct default template argument");
--
2.34.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [committed 2/2] libstdc++: Add <spanstream> declarations to <iosfwd> [PR105284]
2022-05-10 15:43 [committed 1/2] libstdc++: Add <syncstream> declarations to <iosfwd> [PR105284] Jonathan Wakely
@ 2022-05-10 15:43 ` Jonathan Wakely
0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Wakely @ 2022-05-10 15:43 UTC (permalink / raw)
To: libstdc++, gcc-patches
Tested powerpc64le-linux, pushed to trunk.
-- >8 --
libstdc++-v3/ChangeLog:
PR libstdc++/105284
* include/std/iosfwd: Add declarations for <spanstream> class
templates and typedefs.
* include/std/spanstream (basic_spanbuf, basic_ispanstream)
(basic_ospanstream, basic_spanstream): Remove default template
arguments.
* testsuite/27_io/headers/iosfwd/synopsis.cc: Add <spanstream>
declarations.
* testsuite/27_io/headers/iosfwd/types.cc: Check <spanstream>
default arguments.
---
libstdc++-v3/include/std/iosfwd | 23 +++++++++
libstdc++-v3/include/std/spanstream | 8 +--
| 13 +++++
| 50 +++++++++++++++++++
4 files changed, 90 insertions(+), 4 deletions(-)
diff --git a/libstdc++-v3/include/std/iosfwd b/libstdc++-v3/include/std/iosfwd
index c8c67c86c3b..ddf0c953856 100644
--- a/libstdc++-v3/include/std/iosfwd
+++ b/libstdc++-v3/include/std/iosfwd
@@ -225,6 +225,29 @@ _GLIBCXX_END_NAMESPACE_CXX11
#endif
#endif // C++20 && CXX11_ABI
+#if __cplusplus > 202002L
+ template<typename _CharT, typename _Traits = char_traits<_CharT>>
+ class basic_spanbuf;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>>
+ class basic_ispanstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>>
+ class basic_ospanstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>>
+ class basic_spanstream;
+
+ using spanbuf = basic_spanbuf<char>;
+ using ispanstream = basic_ispanstream<char>;
+ using ospanstream = basic_ospanstream<char>;
+ using spanstream = basic_spanstream<char>;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+ using wspanbuf = basic_spanbuf<wchar_t>;
+ using wispanstream = basic_ispanstream<wchar_t>;
+ using wospanstream = basic_ospanstream<wchar_t>;
+ using wspanstream = basic_spanstream<wchar_t>;
+#endif
+#endif // C++23
+
/** @} */
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/spanstream b/libstdc++-v3/include/std/spanstream
index 000bda52a1e..5855b286efe 100644
--- a/libstdc++-v3/include/std/spanstream
+++ b/libstdc++-v3/include/std/spanstream
@@ -45,7 +45,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#define __cpp_lib_spanstream 202106L
-template<typename _CharT, typename _Traits = char_traits<_CharT>>
+template<typename _CharT, typename _Traits>
class basic_spanbuf
: public basic_streambuf<_CharT, _Traits>
{
@@ -218,7 +218,7 @@ template<typename _CharT, typename _Traits>
using spanbuf = basic_spanbuf<char>;
using wspanbuf = basic_spanbuf<wchar_t>;
-template<typename _CharT, typename _Traits = char_traits<_CharT>>
+template<typename _CharT, typename _Traits>
class basic_ispanstream
: public basic_istream<_CharT, _Traits>
{
@@ -310,7 +310,7 @@ template<typename _CharT, typename _Traits>
using ispanstream = basic_ispanstream<char>;
using wispanstream = basic_ispanstream<wchar_t>;
-template<typename _CharT, typename _Traits = char_traits<_CharT>>
+template<typename _CharT, typename _Traits>
class basic_ospanstream
: public basic_ostream<_CharT, _Traits>
{
@@ -378,7 +378,7 @@ template<typename _CharT, typename _Traits>
using ospanstream = basic_ospanstream<char>;
using wospanstream = basic_ospanstream<wchar_t>;
-template<typename _CharT, typename _Traits = char_traits<_CharT>>
+template<typename _CharT, typename _Traits>
class basic_spanstream
: public basic_iostream<_CharT, _Traits>
{
--git a/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
index 48f733bf28a..467d63609bd 100644
--- a/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
+++ b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
@@ -75,6 +75,12 @@ _GLIBCXX_END_NAMESPACE_CXX11
typedef basic_ostringstream<char> ostringstream;
typedef basic_stringstream<char> stringstream;
+#if __cplusplus > 202002L
+ typedef basic_spanbuf<char> spanbuf;
+ typedef basic_ispanstream<char> ispanstream;
+ typedef basic_ospanstream<char> ospanstream;
+ typedef basic_spanstream<char> spanstream;
+#endif
typedef basic_filebuf<char> filebuf;
typedef basic_ifstream<char> ifstream;
@@ -96,6 +102,13 @@ _GLIBCXX_END_NAMESPACE_CXX11
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<wchar_t> wstringstream;
+#if __cplusplus > 202002L
+ typedef basic_spanbuf<wchar_t> wspanbuf;
+ typedef basic_ispanstream<wchar_t> wispanstream;
+ typedef basic_ospanstream<wchar_t> wospanstream;
+ typedef basic_spanstream<wchar_t> wspanstream;
+#endif
+
typedef basic_filebuf<wchar_t> wfilebuf;
typedef basic_ifstream<wchar_t> wifstream;
typedef basic_ofstream<wchar_t> wofstream;
--git a/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc b/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
index e2c9c9b8dfa..baf37e910af 100644
--- a/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
+++ b/libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
@@ -115,6 +115,56 @@ static_assert(Same<basic_stringstream<wchar_t>,
>::value,
"std::basic_stringstream<wchar_t> has the correct default template argument");
+#if __cplusplus > 202002L
+using std::basic_spanbuf;
+
+static_assert(Same<basic_spanbuf<char>,
+ basic_spanbuf<char, Traits<char>>
+ >::value,
+ "std::basic_spanbuf<char> has the correct default template argument");
+
+static_assert(Same<basic_spanbuf<wchar_t>,
+ basic_spanbuf<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_spanbuf<wchar_t> has the correct default template argument");
+
+using std::basic_ispanstream;
+
+static_assert(Same<basic_ispanstream<char>,
+ basic_ispanstream<char, Traits<char>>
+ >::value,
+ "std::basic_ispanstream<char> has the correct default template argument");
+
+static_assert(Same<basic_ispanstream<wchar_t>,
+ basic_ispanstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ispanstream<wchar_t> has the correct default template argument");
+
+using std::basic_ospanstream;
+
+static_assert(Same<basic_ospanstream<char>,
+ basic_ospanstream<char, Traits<char>>
+ >::value,
+ "std::basic_ospanstream<char> has the correct default template argument");
+
+static_assert(Same<basic_ospanstream<wchar_t>,
+ basic_ospanstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_ospanstream<wchar_t> has the correct default template argument");
+
+using std::basic_spanstream;
+
+static_assert(Same<basic_spanstream<char>,
+ basic_spanstream<char, Traits<char>>
+ >::value,
+ "std::basic_spanstream<char> has the correct default template argument");
+
+static_assert(Same<basic_spanstream<wchar_t>,
+ basic_spanstream<wchar_t, Traits<wchar_t>>
+ >::value,
+ "std::basic_spanstream<wchar_t> has the correct default template argument");
+#endif
+
using std::basic_filebuf;
static_assert(Same<basic_filebuf<char>,
--
2.34.1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-10 15:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-10 15:43 [committed 1/2] libstdc++: Add <syncstream> declarations to <iosfwd> [PR105284] Jonathan Wakely
2022-05-10 15:43 ` [committed 2/2] libstdc++: Add <spanstream> " Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).