diff options
Diffstat (limited to 'libcxx/include')
-rw-r--r-- | libcxx/include/future | 2 | ||||
-rw-r--r-- | libcxx/include/istream | 4 | ||||
-rw-r--r-- | libcxx/include/ostream | 2 | ||||
-rw-r--r-- | libcxx/include/string | 48 | ||||
-rw-r--r-- | libcxx/include/strstream | 39 |
5 files changed, 47 insertions, 48 deletions
diff --git a/libcxx/include/future b/libcxx/include/future index 48b84cfcb32..9f3780bc711 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -452,6 +452,8 @@ public: _LIBCPP_INLINE_VISIBILITY const error_code& code() const throw() {return __ec_;} + + virtual ~future_error() _NOEXCEPT; }; class __assoc_sub_state diff --git a/libcxx/include/istream b/libcxx/include/istream index 024f5ce8b03..c56393acbee 100644 --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -177,11 +177,13 @@ public: virtual ~basic_istream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_istream(basic_istream&& __rhs); #endif // 27.7.1.1.2 Assign/swap: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_istream& operator=(basic_istream&& __rhs); #endif void swap(basic_istream& __rhs); @@ -1504,11 +1506,13 @@ public: virtual ~basic_iostream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_iostream(basic_iostream&& __rhs); #endif // assign/swap #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_iostream& operator=(basic_iostream&& __rhs); #endif void swap(basic_iostream& __rhs); diff --git a/libcxx/include/ostream b/libcxx/include/ostream index 6730cabe636..f1a3de9c6df 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -154,11 +154,13 @@ public: virtual ~basic_ostream(); protected: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_ostream(basic_ostream&& __rhs); #endif // 27.7.2.3 Assign/swap #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY basic_ostream& operator=(basic_ostream&& __rhs); #endif void swap(basic_ostream& __rhs); diff --git a/libcxx/include/string b/libcxx/include/string index 5996c32cfc6..7d0d53a3d31 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -3970,54 +3970,6 @@ extern template class basic_string<char>; extern template class basic_string<wchar_t>; extern template - enable_if<__is_forward_iterator<char const*>::value, void>::type - basic_string<char, char_traits<char>, allocator<char> >:: - __init<char const*>(char const*, char const*); - -extern template - enable_if<__is_forward_iterator<wchar_t const*>::value, void>::type - basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >:: - __init<wchar_t const*>(wchar_t const*, wchar_t const*); - -extern template - enable_if<__is_forward_iterator<char*>::value, - basic_string<char, char_traits<char>, allocator<char> >&>::type - basic_string<char, char_traits<char>, allocator<char> >:: - append<char*>(char*, char*); - -extern template - enable_if<__is_forward_iterator<wchar_t*>::value, - basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >&>::type - basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >:: - append<wchar_t*>(wchar_t*, wchar_t*); - -extern template - enable_if<__is_forward_iterator<char const*>::value, - string::iterator>::type - string:: - insert<char const*>(string::const_iterator, char const*, char const*); - -extern template - enable_if<__is_forward_iterator<wchar_t const*>::value, - wstring::iterator>::type - wstring:: - insert<wchar_t const*>(wstring::const_iterator, wchar_t const*, wchar_t const*); - -extern template - enable_if<__is_input_iterator<char const*>::value, string&>::type - string:: - replace<char const*>(string::const_iterator, string::const_iterator, char const*, char const*); - -extern template - enable_if<__is_input_iterator<wchar_t const*>::value, wstring&>::type - wstring:: - replace<wchar_t const*>(wstring::const_iterator, wstring::const_iterator, wchar_t const*, wchar_t const*); - -extern template - enable_if<__is_forward_iterator<wchar_t*>::value, wstring&>::type - wstring::assign<wchar_t*>(wchar_t*, wchar_t*); - -extern template string operator+<char, char_traits<char>, allocator<char> >(char const*, string const&); diff --git a/libcxx/include/strstream b/libcxx/include/strstream index 8f4ed0c80ca..4ff34a55be4 100644 --- a/libcxx/include/strstream +++ b/libcxx/include/strstream @@ -150,7 +150,9 @@ public: strstreambuf(const unsigned char* __gnext, streamsize __n); #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY strstreambuf(strstreambuf&& __rhs); + _LIBCPP_INLINE_VISIBILITY strstreambuf& operator=(strstreambuf&& __rhs); #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES @@ -187,6 +189,43 @@ private: void __init(char* __gnext, streamsize __n, char* __pbeg); }; +#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + +inline _LIBCPP_INLINE_VISIBILITY +strstreambuf::strstreambuf(strstreambuf&& __rhs) + : streambuf(__rhs), + __strmode_(__rhs.__strmode_), + __alsize_(__rhs.__alsize_), + __palloc_(__rhs.__palloc_), + __pfree_(__rhs.__pfree_) +{ + __rhs.setg(nullptr, nullptr, nullptr); + __rhs.setp(nullptr, nullptr); +} + +inline _LIBCPP_INLINE_VISIBILITY +strstreambuf& +strstreambuf::operator=(strstreambuf&& __rhs) +{ + if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0) + { + if (__pfree_) + __pfree_(eback()); + else + delete [] eback(); + } + streambuf::operator=(__rhs); + __strmode_ = __rhs.__strmode_; + __alsize_ = __rhs.__alsize_; + __palloc_ = __rhs.__palloc_; + __pfree_ = __rhs.__pfree_; + __rhs.setg(nullptr, nullptr, nullptr); + __rhs.setp(nullptr, nullptr); + return *this; +} + +#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES + class _LIBCPP_VISIBLE istrstream : public istream { |