diff --git a/libcxx/include/fstream b/libcxx/include/fstream --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -219,16 +219,12 @@ // 27.9.1.2 Constructors/destructor: basic_filebuf(); -#ifndef _LIBCPP_CXX03_LANG basic_filebuf(basic_filebuf&& __rhs); -#endif virtual ~basic_filebuf(); // 27.9.1.3 Assign/swap: -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY basic_filebuf& operator=(basic_filebuf&& __rhs); -#endif void swap(basic_filebuf& __rhs); // 27.9.1.4 Members: @@ -318,8 +314,6 @@ setbuf(nullptr, 4096); } -#ifndef _LIBCPP_CXX03_LANG - template basic_filebuf<_CharT, _Traits>::basic_filebuf(basic_filebuf&& __rhs) : basic_streambuf<_CharT, _Traits>(__rhs) @@ -394,8 +388,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template basic_filebuf<_CharT, _Traits>::~basic_filebuf() { @@ -1164,13 +1156,10 @@ : basic_ifstream(__p.c_str(), __mode) {} #endif // _LIBCPP_STD_VER >= 17 #endif -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY basic_ifstream(basic_ifstream&& __rhs); - _LIBCPP_INLINE_VISIBILITY basic_ifstream& operator=(basic_ifstream&& __rhs); -#endif _LIBCPP_INLINE_VISIBILITY void swap(basic_ifstream& __rhs); @@ -1240,8 +1229,6 @@ } #endif -#ifndef _LIBCPP_CXX03_LANG - template inline basic_ifstream<_CharT, _Traits>::basic_ifstream(basic_ifstream&& __rhs) @@ -1261,8 +1248,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template inline void @@ -1379,13 +1364,10 @@ : basic_ofstream(__p.c_str(), __mode) {} #endif // _LIBCPP_STD_VER >= 17 -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY basic_ofstream(basic_ofstream&& __rhs); - _LIBCPP_INLINE_VISIBILITY basic_ofstream& operator=(basic_ofstream&& __rhs); -#endif _LIBCPP_INLINE_VISIBILITY void swap(basic_ofstream& __rhs); @@ -1454,8 +1436,6 @@ } #endif -#ifndef _LIBCPP_CXX03_LANG - template inline basic_ofstream<_CharT, _Traits>::basic_ofstream(basic_ofstream&& __rhs) @@ -1475,8 +1455,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template inline void @@ -1595,13 +1573,12 @@ #endif // _LIBCPP_STD_VER >= 17 #endif -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY basic_fstream(basic_fstream&& __rhs); _LIBCPP_INLINE_VISIBILITY basic_fstream& operator=(basic_fstream&& __rhs); -#endif + _LIBCPP_INLINE_VISIBILITY void swap(basic_fstream& __rhs); @@ -1668,8 +1645,6 @@ } #endif -#ifndef _LIBCPP_CXX03_LANG - template inline basic_fstream<_CharT, _Traits>::basic_fstream(basic_fstream&& __rhs) @@ -1689,8 +1664,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template inline void diff --git a/libcxx/include/ios b/libcxx/include/ios --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -591,13 +591,6 @@ clear(__rdstate_); } -#if defined(_LIBCPP_CXX03_LANG) -struct _LIBCPP_TYPE_VIS __cxx03_bool { - typedef void (__cxx03_bool::*__bool_type)(); - void __true_value() {} -}; -#endif - template class _LIBCPP_TEMPLATE_VIS basic_ios : public ios_base @@ -614,18 +607,8 @@ static_assert((is_same<_CharT, typename traits_type::char_type>::value), "traits_type::char_type must be the same type as CharT"); - // __true_value will generate undefined references when linking unless - // we give it internal linkage. - -#if defined(_LIBCPP_CXX03_LANG) - _LIBCPP_INLINE_VISIBILITY - operator __cxx03_bool::__bool_type() const { - return !fail() ? &__cxx03_bool::__true_value : nullptr; - } -#else _LIBCPP_INLINE_VISIBILITY _LIBCPP_EXPLICIT operator bool() const {return !fail();} -#endif _LIBCPP_INLINE_VISIBILITY bool operator!() const {return fail();} _LIBCPP_INLINE_VISIBILITY iostate rdstate() const {return ios_base::rdstate();} @@ -679,10 +662,8 @@ _LIBCPP_INLINE_VISIBILITY void move(basic_ios& __rhs); -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY void move(basic_ios&& __rhs) {move(__rhs);} -#endif _LIBCPP_INLINE_VISIBILITY void swap(basic_ios& __rhs) _NOEXCEPT; _LIBCPP_INLINE_VISIBILITY diff --git a/libcxx/include/istream b/libcxx/include/istream --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -191,14 +191,12 @@ { this->init(__sb); } virtual ~basic_istream(); protected: -#ifndef _LIBCPP_CXX03_LANG inline _LIBCPP_INLINE_VISIBILITY basic_istream(basic_istream&& __rhs); // 27.7.1.1.2 Assign/swap: inline _LIBCPP_INLINE_VISIBILITY basic_istream& operator=(basic_istream&& __rhs); -#endif inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_istream& __rhs) { @@ -206,10 +204,8 @@ basic_ios::swap(__rhs); } -#ifndef _LIBCPP_CXX03_LANG basic_istream (const basic_istream& __rhs) = delete; basic_istream& operator=(const basic_istream& __rhs) = delete; -#endif public: // 27.7.1.1.3 Prefix/suffix: @@ -333,8 +329,6 @@ __is.setstate(ios_base::failbit); } -#ifndef _LIBCPP_CXX03_LANG - template basic_istream<_CharT, _Traits>::basic_istream(basic_istream&& __rhs) : __gc_(__rhs.__gc_) @@ -351,8 +345,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template basic_istream<_CharT, _Traits>::~basic_istream() { @@ -1376,8 +1368,6 @@ return __is; } -#ifndef _LIBCPP_CXX03_LANG - template struct __is_istreamable : false_type { }; @@ -1388,7 +1378,7 @@ template , - __is_istreamable<_Stream&, _Tp&&>>::value + __is_istreamable<_Stream&, _Tp&&> >::value >::type> _LIBCPP_INLINE_VISIBILITY _Stream&& operator>>(_Stream&& __is, _Tp&& __x) @@ -1397,8 +1387,6 @@ return _VSTD::move(__is); } -#endif // _LIBCPP_CXX03_LANG - template class _LIBCPP_TEMPLATE_VIS basic_iostream : public basic_istream<_CharT, _Traits>, @@ -1420,21 +1408,18 @@ virtual ~basic_iostream(); protected: -#ifndef _LIBCPP_CXX03_LANG inline _LIBCPP_INLINE_VISIBILITY basic_iostream(basic_iostream&& __rhs); // assign/swap inline _LIBCPP_INLINE_VISIBILITY basic_iostream& operator=(basic_iostream&& __rhs); -#endif + inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_iostream& __rhs) { basic_istream::swap(__rhs); } }; -#ifndef _LIBCPP_CXX03_LANG - template basic_iostream<_CharT, _Traits>::basic_iostream(basic_iostream&& __rhs) : basic_istream<_CharT, _Traits>(_VSTD::move(__rhs)) @@ -1449,8 +1434,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template basic_iostream<_CharT, _Traits>::~basic_iostream() { @@ -1574,8 +1557,6 @@ return getline(__is, __str, __is.widen('\n')); } -#ifndef _LIBCPP_CXX03_LANG - template inline _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& @@ -1594,8 +1575,6 @@ return getline(__is, __str, __is.widen('\n')); } -#endif // _LIBCPP_CXX03_LANG - template basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x) diff --git a/libcxx/include/ostream b/libcxx/include/ostream --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -165,27 +165,21 @@ { this->init(__sb); } virtual ~basic_ostream(); protected: -#ifndef _LIBCPP_CXX03_LANG inline _LIBCPP_INLINE_VISIBILITY basic_ostream(basic_ostream&& __rhs); // 27.7.2.3 Assign/swap inline _LIBCPP_INLINE_VISIBILITY basic_ostream& operator=(basic_ostream&& __rhs); -#endif + inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_ostream& __rhs) { basic_ios::swap(__rhs); } -#ifndef _LIBCPP_CXX03_LANG basic_ostream (const basic_ostream& __rhs) = delete; basic_ostream& operator=(const basic_ostream& __rhs) = delete; -#else - basic_ostream (const basic_ostream& __rhs); // not defined - basic_ostream& operator=(const basic_ostream& __rhs); // not defined -#endif -public: +public: // 27.7.2.4 Prefix/suffix: class _LIBCPP_TEMPLATE_VIS sentry; @@ -292,8 +286,6 @@ } } -#ifndef _LIBCPP_CXX03_LANG - template basic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs) { @@ -308,8 +300,6 @@ return *this; } -#endif // _LIBCPP_CXX03_LANG - template basic_ostream<_CharT, _Traits>::~basic_ostream() { @@ -1025,8 +1015,6 @@ return __os; } -#ifndef _LIBCPP_CXX03_LANG - template struct __is_ostreamable : false_type { }; @@ -1037,7 +1025,7 @@ template , - __is_ostreamable<_Stream&, const _Tp&>>::value + __is_ostreamable<_Stream&, const _Tp&> >::value >::type> _LIBCPP_INLINE_VISIBILITY _Stream&& operator<<(_Stream&& __os, const _Tp& __x) @@ -1046,8 +1034,6 @@ return _VSTD::move(__os); } -#endif // _LIBCPP_CXX03_LANG - template basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, diff --git a/libcxx/include/sstream b/libcxx/include/sstream --- a/libcxx/include/sstream +++ b/libcxx/include/sstream @@ -219,19 +219,13 @@ public: // 30.8.2.1 [stringbuf.cons], constructors -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY - basic_stringbuf() : basic_stringbuf(ios_base::in | ios_base::out) {} + basic_stringbuf() + : __hm_(nullptr), __mode_(ios_base::in | ios_base::out) {} _LIBCPP_INLINE_VISIBILITY explicit basic_stringbuf(ios_base::openmode __wch) : __hm_(nullptr), __mode_(__wch) {} -#else - _LIBCPP_INLINE_VISIBILITY - explicit basic_stringbuf(ios_base::openmode __wch = ios_base::in | - ios_base::out) - : __hm_(nullptr), __mode_(__wch) {} -#endif _LIBCPP_INLINE_VISIBILITY explicit basic_stringbuf(const string_type& __s, @@ -643,18 +637,13 @@ public: // 30.8.3.1 [istringstream.cons], constructors -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY - basic_istringstream() : basic_istringstream(ios_base::in) {} + basic_istringstream() + : basic_istream<_CharT, _Traits>(&__sb_), __sb_(ios_base::in) {} _LIBCPP_INLINE_VISIBILITY explicit basic_istringstream(ios_base::openmode __wch) : basic_istream<_CharT, _Traits>(&__sb_), __sb_(__wch | ios_base::in) {} -#else - _LIBCPP_INLINE_VISIBILITY - explicit basic_istringstream(ios_base::openmode __wch = ios_base::in) - : basic_istream<_CharT, _Traits>(&__sb_), __sb_(__wch | ios_base::in) {} -#endif _LIBCPP_INLINE_VISIBILITY explicit basic_istringstream(const string_type& __s, @@ -728,20 +717,13 @@ public: // 30.8.4.1 [ostringstream.cons], constructors -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY - basic_ostringstream() : basic_ostringstream(ios_base::out) {} + basic_ostringstream() + : basic_ostream<_CharT, _Traits>(&__sb_), __sb_(ios_base::out) {} _LIBCPP_INLINE_VISIBILITY explicit basic_ostringstream(ios_base::openmode __wch) - : basic_ostream<_CharT, _Traits>(&__sb_), - __sb_(__wch | ios_base::out) {} -#else - _LIBCPP_INLINE_VISIBILITY - explicit basic_ostringstream(ios_base::openmode __wch = ios_base::out) - : basic_ostream<_CharT, _Traits>(&__sb_), - __sb_(__wch | ios_base::out) {} -#endif + : basic_ostream<_CharT, _Traits>(&__sb_), __sb_(__wch | ios_base::out) {} _LIBCPP_INLINE_VISIBILITY explicit basic_ostringstream(const string_type& __s, @@ -816,19 +798,13 @@ public: // 30.8.5.1 [stringstream.cons], constructors -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY - basic_stringstream() : basic_stringstream(ios_base::in | ios_base::out) {} + basic_stringstream() + : basic_iostream<_CharT, _Traits>(&__sb_), __sb_(ios_base::in | ios_base::out) {} _LIBCPP_INLINE_VISIBILITY explicit basic_stringstream(ios_base::openmode __wch) : basic_iostream<_CharT, _Traits>(&__sb_), __sb_(__wch) {} -#else - _LIBCPP_INLINE_VISIBILITY - explicit basic_stringstream(ios_base::openmode __wch = ios_base::in | - ios_base::out) - : basic_iostream<_CharT, _Traits>(&__sb_), __sb_(__wch) {} -#endif _LIBCPP_INLINE_VISIBILITY explicit basic_stringstream(const string_type& __s,