From 95cb0fc8c51841cc6a0e51490cb3769eb80fa34c Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 10 Nov 2020 15:57:04 +0000 Subject: libstdc++: Add remaining C++20 additions to [P0408R7] This adds the new overloads of basic_stringbuf::str, and the corresponding overloads to basic_istringstream, basic_ostringstream and basic_stringstream. libstdc++-v3/ChangeLog: * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten patterns. (GLIBCXX_3.4.29): Export new symbols. * include/bits/alloc_traits.h (__allocator_like): New concept. * include/std/sstream (basic_stringbuf::swap): Add exception specification. (basic_stringbuf::str() const): Add ref-qualifier. Use new _M_high_mark function. (basic_stringbuf::str(const SAlloc&) const): Define new function. (basic_stringbuf::str() &&): Likewise. (basic_stringbuf::str(const basic_string&)): Likewise. (basic_stringbuf::str(basic_string&&)): Likewise. (basic_stringbuf::view() const): Use _M_high_mark. (basic_istringstream::str, basic_ostringstream::str) (basic_stringstream::str): Define new overloads. * src/c++20/sstream-inst.cc (basic_stringbuf::str) (basic_istringstream::str, basic_ostringstream::str) (basic_stringstream::str): Explicit instantiation definitions for new overloads. * testsuite/27_io/basic_istringstream/view/char/1.cc: Add more checks. * testsuite/27_io/basic_istringstream/view/wchar_t/1.cc: Likewise. * testsuite/27_io/basic_ostringstream/view/char/1.cc: Likewise. * testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc: Likewise. * testsuite/27_io/basic_stringstream/view/char/1.cc: Likewise. * testsuite/27_io/basic_stringstream/view/wchar_t/1.cc: Likewise. * testsuite/27_io/basic_istringstream/str/char/2.cc: New test. * testsuite/27_io/basic_istringstream/str/wchar_t/2.cc: New test. * testsuite/27_io/basic_ostringstream/str/char/3.cc: New test. * testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc: New test. * testsuite/27_io/basic_stringbuf/str/char/4.cc: New test. * testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc: New test. * testsuite/27_io/basic_stringstream/str/char/5.cc: New test. * testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc: New test. --- libstdc++-v3/src/c++20/sstream-inst.cc | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'libstdc++-v3/src/c++20') diff --git a/libstdc++-v3/src/c++20/sstream-inst.cc b/libstdc++-v3/src/c++20/sstream-inst.cc index 7d275de5cc2..9e157d1b1bf 100644 --- a/libstdc++-v3/src/c++20/sstream-inst.cc +++ b/libstdc++-v3/src/c++20/sstream-inst.cc @@ -46,29 +46,53 @@ template basic_stringbuf::basic_stringbuf(basic_stringbuf&&, __xfer_bufptrs&&); template basic_stringbuf::allocator_type basic_stringbuf::get_allocator() const noexcept; +template string +basic_stringbuf::str() const &; +template string +basic_stringbuf::str() &&; template string_view basic_stringbuf::view() const noexcept; +template void +basic_stringbuf::str(string&&); template basic_istringstream::basic_istringstream(ios_base::openmode, const allocator_type&); template basic_istringstream::basic_istringstream(__string_type&&, ios_base::openmode); +template string +basic_istringstream::str() const &; +template string +basic_istringstream::str() &&; template string_view basic_istringstream::view() const noexcept; +template void +basic_istringstream::str(string&&); template basic_ostringstream::basic_ostringstream(ios_base::openmode, const allocator_type&); template basic_ostringstream::basic_ostringstream(__string_type&&, ios_base::openmode); +template string +basic_ostringstream::str() const &; +template string +basic_ostringstream::str() &&; template string_view basic_ostringstream::view() const noexcept; +template void +basic_ostringstream::str(string&&); template basic_stringstream::basic_stringstream(ios_base::openmode, const allocator_type&); template basic_stringstream::basic_stringstream(__string_type&&, ios_base::openmode); +template string +basic_stringstream::str() const &; +template string +basic_stringstream::str() &&; template string_view basic_stringstream::view() const noexcept; +template void +basic_stringstream::str(string&&); #ifdef _GLIBCXX_USE_WCHAR_T template basic_stringbuf::basic_stringbuf(const allocator_type&); @@ -84,29 +108,53 @@ template basic_stringbuf::basic_stringbuf(basic_stringbuf&&, template basic_stringbuf::allocator_type basic_stringbuf::get_allocator() const noexcept; +template wstring +basic_stringbuf::str() const &; +template wstring +basic_stringbuf::str() &&; template wstring_view basic_stringbuf::view() const noexcept; +template void +basic_stringbuf::str(wstring&&); template basic_istringstream::basic_istringstream(ios_base::openmode, const allocator_type&); template basic_istringstream::basic_istringstream(__string_type&&, ios_base::openmode); +template wstring +basic_istringstream::str() const &; +template wstring +basic_istringstream::str() &&; template wstring_view basic_istringstream::view() const noexcept; +template void +basic_istringstream::str(wstring&&); template basic_ostringstream::basic_ostringstream(ios_base::openmode, const allocator_type&); template basic_ostringstream::basic_ostringstream(__string_type&&, ios_base::openmode); +template wstring +basic_ostringstream::str() const &; +template wstring +basic_ostringstream::str() &&; template wstring_view basic_ostringstream::view() const noexcept; +template void +basic_ostringstream::str(wstring&&); template basic_stringstream::basic_stringstream(ios_base::openmode, const allocator_type&); template basic_stringstream::basic_stringstream(__string_type&&, ios_base::openmode); +template wstring +basic_stringstream::str() const &; +template wstring +basic_stringstream::str() &&; template wstring_view basic_stringstream::view() const noexcept; +template void +basic_stringstream::str(wstring&&); #endif _GLIBCXX_END_NAMESPACE_VERSION -- cgit v1.2.3