[libcxx-commits] [libcxx] 5854968 - [libc++] Enable the rvalue overloads of operator<< and operator>> even in C++03.

Arthur O'Dwyer via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jun 25 12:00:35 PDT 2021


Author: Arthur O'Dwyer
Date: 2021-06-25T14:59:58-04:00
New Revision: 585496803ca25cbbafc942355f715cce46d736fb

URL: https://github.com/llvm/llvm-project/commit/585496803ca25cbbafc942355f715cce46d736fb
DIFF: https://github.com/llvm/llvm-project/commit/585496803ca25cbbafc942355f715cce46d736fb.diff

LOG: [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

Added: 
    

Modified: 
    libcxx/include/istream
    libcxx/include/ostream
    libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/not_istreamable.verify.cpp
    libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp
    libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/not_ostreamable.verify.cpp
    libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/rvalue.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/include/istream b/libcxx/include/istream
index c83b025b146f0..531280719b30e 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 <class _Stream, class _Tp, class = void>
 struct __is_istreamable : false_type { };
 
@@ -1388,7 +1386,7 @@ struct __is_istreamable<_Stream, _Tp, decltype(
 
 template <class _Stream, class _Tp, class = typename enable_if<
     _And<is_base_of<ios_base, _Stream>,
-         __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 _CharT, class _Traits>
 class _LIBCPP_TEMPLATE_VIS basic_iostream
     : public basic_istream<_CharT, _Traits>,

diff  --git a/libcxx/include/ostream b/libcxx/include/ostream
index a8faa08a18e3f..81ba565e67f53 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 <class _Stream, class _Tp, class = void>
 struct __is_ostreamable : false_type { };
 
@@ -1036,7 +1034,7 @@ struct __is_ostreamable<_Stream, _Tp, decltype(
 
 template <class _Stream, class _Tp, class = typename enable_if<
     _And<is_base_of<ios_base, _Stream>,
-         __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<class _CharT, class _Traits, class _Allocator>
 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 1a03ed69b1406..8b9d941dd4419 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 70ada3a9239f0..a2fe4e82a0505 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
-
 // <istream>
 
 // template <class Stream, class T>
@@ -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 7ca36c5622617..2a616f3b628fe 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 99e70c4251691..d71855a9b51a7 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
-
 // <ostream>
 
 // template <class Stream, class T>


        


More information about the libcxx-commits mailing list