_LIBCPP_HIDE_FROM_ABI_SSTREAM string_type str() const & { return str(__str_.get_allocator()); }
_LIBCPP_HIDE_FROM_ABI_SSTREAM string_type str() && {
+ string_type __result;
const basic_string_view<_CharT, _Traits> __view = view();
- string_type __result(std::move(__str_), __view.data() - __str_.data(), __view.size());
+ if (!__view.empty()) {
+ auto __pos = __view.data() - __str_.data();
+ __result.assign(std::move(__str_), __pos, __view.size());
+ }
__str_.clear();
__init_buf_ptrs();
return __result;
assert(s == STR("testing"));
assert(ss.view().empty());
}
+ {
+ std::basic_istringstream<CharT> ss;
+ std::basic_string<CharT> s = std::move(ss).str();
+ assert(s.empty());
+ assert(ss.view().empty());
+ }
}
int main(int, char**) {
assert(s == STR("testing"));
assert(ss.view().empty());
}
+ {
+ std::basic_ostringstream<CharT> ss;
+ std::basic_string<CharT> s = std::move(ss).str();
+ assert(s.empty());
+ assert(ss.view().empty());
+ }
}
int main(int, char**) {
assert(s == STR("testing"));
assert(buf.view().empty());
}
+ {
+ std::basic_stringbuf<CharT> buf;
+ std::basic_string<CharT> s = std::move(buf).str();
+ assert(s.empty());
+ assert(buf.view().empty());
+ }
}
int main(int, char**) {
assert(s == STR("testing"));
assert(ss.view().empty());
}
+ {
+ std::basic_stringstream<CharT> ss;
+ std::basic_string<CharT> s = std::move(ss).str();
+ assert(s.empty());
+ assert(ss.view().empty());
+ }
}
int main(int, char**) {