From: Arthur O'Dwyer Date: Tue, 15 Jun 2021 16:57:05 +0000 (-0400) Subject: [libc++] Enable the rvalue overloads of operator<< and operator>> even in C++03. X-Git-Tag: llvmorg-14-init~2976 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=585496803ca25cbbafc942355f715cce46d736fb;p=platform%2Fupstream%2Fllvm.git [libc++] Enable the rvalue overloads of operator<< and operator>> even in C++03. Continuing to eliminate no-longer-needed uses of _LIBCPP_CXX03_LANG. Differential Revision: https://reviews.llvm.org/D104725 --- diff --git a/libcxx/include/istream b/libcxx/include/istream index c83b025..5312807 100644 --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -1376,8 +1376,6 @@ ws(basic_istream<_CharT, _Traits>& __is) return __is; } -#ifndef _LIBCPP_CXX03_LANG - template struct __is_istreamable : false_type { }; @@ -1388,7 +1386,7 @@ struct __is_istreamable<_Stream, _Tp, decltype( template , - __is_istreamable<_Stream&, _Tp&&>>::value + __is_istreamable<_Stream&, _Tp&&> >::value >::type> _LIBCPP_INLINE_VISIBILITY _Stream&& operator>>(_Stream&& __is, _Tp&& __x) @@ -1397,8 +1395,6 @@ _Stream&& operator>>(_Stream&& __is, _Tp&& __x) return _VSTD::move(__is); } -#endif // _LIBCPP_CXX03_LANG - template class _LIBCPP_TEMPLATE_VIS basic_iostream : public basic_istream<_CharT, _Traits>, diff --git a/libcxx/include/ostream b/libcxx/include/ostream index a8faa08..81ba565 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -1024,8 +1024,6 @@ flush(basic_ostream<_CharT, _Traits>& __os) return __os; } -#ifndef _LIBCPP_CXX03_LANG - template struct __is_ostreamable : false_type { }; @@ -1036,7 +1034,7 @@ struct __is_ostreamable<_Stream, _Tp, decltype( template , - __is_ostreamable<_Stream&, const _Tp&>>::value + __is_ostreamable<_Stream&, const _Tp&> >::value >::type> _LIBCPP_INLINE_VISIBILITY _Stream&& operator<<(_Stream&& __os, const _Tp& __x) @@ -1045,8 +1043,6 @@ _Stream&& operator<<(_Stream&& __os, const _Tp& __x) return _VSTD::move(__os); } -#endif // _LIBCPP_CXX03_LANG - template basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, diff --git a/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/not_istreamable.verify.cpp b/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/not_istreamable.verify.cpp index 1a03ed6..8b9d941d 100644 --- a/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/not_istreamable.verify.cpp +++ b/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/not_istreamable.verify.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03 - // Make sure the rvalue overload of operator>> isn't part of the overload set // when the type is not input streamable from a lvalue stream. diff --git a/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp b/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp index 70ada3a..a2fe4e8 100644 --- a/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp +++ b/libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03 - // // template @@ -77,7 +75,7 @@ int main(int, char**) // test perfect forwarding assert(called == false); std::istringstream ss; - std::istringstream&& result = (std::move(ss) >> A{}); + std::istringstream&& result = (std::move(ss) >> A()); assert(&result == &ss); assert(called); } diff --git a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/not_ostreamable.verify.cpp b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/not_ostreamable.verify.cpp index 7ca36c5..2a616f3 100644 --- a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/not_ostreamable.verify.cpp +++ b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/not_ostreamable.verify.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03 - // Make sure the rvalue overload of operator<< isn't part of the overload set // when the type is not output streamable into a lvalue stream. diff --git a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp index 99e70c4..d71855a 100644 --- a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp +++ b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: c++03 - // // template