summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/future2
-rw-r--r--libcxx/include/istream4
-rw-r--r--libcxx/include/ostream2
-rw-r--r--libcxx/include/string48
-rw-r--r--libcxx/include/strstream39
-rw-r--r--libcxx/src/string.cpp46
-rw-r--r--libcxx/src/strstream.cpp35
-rw-r--r--libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp18
8 files changed, 61 insertions, 133 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
{
diff --git a/libcxx/src/string.cpp b/libcxx/src/string.cpp
index 793a58be8c6..7e651a1a8e0 100644
--- a/libcxx/src/string.cpp
+++ b/libcxx/src/string.cpp
@@ -19,52 +19,6 @@ template class __basic_string_common<true>;
template class basic_string<char>;
template class basic_string<wchar_t>;
-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*);
-
-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*);
-
-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*);
-
-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*);
-
-template
- enable_if<__is_forward_iterator<char const*>::value,
- string::iterator>::type
- string::
- insert<char const*>(string::const_iterator, char const*, char const*);
-
-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*);
-
-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*);
-
-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*);
-
-template
- enable_if<__is_forward_iterator<wchar_t*>::value, wstring&>::type
- wstring::assign<wchar_t*>(wchar_t*, wchar_t*);
-
template
string
operator+<char, char_traits<char>, allocator<char> >(char const*, string const&);
diff --git a/libcxx/src/strstream.cpp b/libcxx/src/strstream.cpp
index c2b7f42aac6..53139509edf 100644
--- a/libcxx/src/strstream.cpp
+++ b/libcxx/src/strstream.cpp
@@ -100,41 +100,6 @@ strstreambuf::strstreambuf(const unsigned char* __gnext, streamsize __n)
__init((char*)__gnext, __n, nullptr);
}
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
-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);
-}
-
-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
-
strstreambuf::~strstreambuf()
{
if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
diff --git a/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp b/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp
index b442628073b..c099d1c5637 100644
--- a/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp
+++ b/libcxx/test/utilities/type.index/type.index.members/lt.pass.cpp
@@ -28,8 +28,18 @@ int main()
assert( (t1 <= t2));
assert(!(t1 > t2));
assert( (t1 >= t2));
- assert(!(t1 < t3));
- assert(!(t1 <= t3));
- assert( (t1 > t3));
- assert( (t1 >= t3));
+ if (t1 < t3)
+ {
+ assert( (t1 < t3));
+ assert( (t1 <= t3));
+ assert(!(t1 > t3));
+ assert(!(t1 >= t3));
+ }
+ else
+ {
+ assert(!(t1 < t3));
+ assert(!(t1 <= t3));
+ assert( (t1 > t3));
+ assert( (t1 >= t3));
+ }
}
OpenPOWER on IntegriCloud