[libcxx] r290752 - Revert r290750 - Fix PR19460 - std::ios is convertible to int.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 30 05:11:17 PST 2016


Author: ericwf
Date: Fri Dec 30 07:11:17 2016
New Revision: 290752

URL: http://llvm.org/viewvc/llvm-project?rev=290752&view=rev
Log:
Revert r290750 - Fix PR19460 - std::ios is convertible to int.

Modified:
    libcxx/trunk/include/ios
    libcxx/trunk/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp

Modified: libcxx/trunk/include/ios
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/ios?rev=290752&r1=290751&r2=290752&view=diff
==============================================================================
--- libcxx/trunk/include/ios (original)
+++ libcxx/trunk/include/ios Fri Dec 30 07:11:17 2016
@@ -585,22 +585,9 @@ public:
     typedef typename traits_type::pos_type pos_type;
     typedef typename traits_type::off_type off_type;
 
-#if defined(_LIBCPP_CXX03_LANG)
-private:
-    struct __bool_tag {};
-    typedef void (basic_ios::*_BoolType)(__bool_tag) const;
-    void __true_value(__bool_tag) const {}
-
-public:
-    _LIBCPP_ALWAYS_INLINE
-    operator _BoolType() const {
-        return !fail() ? &basic_ios::__true_value : nullptr;
-    }
-#else
     _LIBCPP_ALWAYS_INLINE
-    _LIBCPP_EXPLICIT operator bool() const {return !fail();}
-#endif
-
+        _LIBCPP_EXPLICIT
+        operator bool() const {return !fail();}
     _LIBCPP_ALWAYS_INLINE bool operator!() const    {return  fail();}
     _LIBCPP_ALWAYS_INLINE iostate rdstate() const   {return ios_base::rdstate();}
     _LIBCPP_ALWAYS_INLINE void clear(iostate __state = goodbit) {ios_base::clear(__state);}

Modified: libcxx/trunk/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp?rev=290752&r1=290751&r2=290752&view=diff
==============================================================================
--- libcxx/trunk/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp (original)
+++ libcxx/trunk/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp Fri Dec 30 07:11:17 2016
@@ -14,21 +14,12 @@
 // operator unspecified-bool-type() const;
 
 #include <ios>
-#include <type_traits>
 #include <cassert>
 
-#include "test_macros.h"
-
 int main()
 {
     std::ios ios(0);
     assert(static_cast<bool>(ios) == !ios.fail());
     ios.setstate(std::ios::failbit);
     assert(static_cast<bool>(ios) == !ios.fail());
-    static_assert((!std::is_convertible<std::ios, void*>::value), "");
-    static_assert((!std::is_convertible<std::ios, int>::value), "");
-    static_assert((!std::is_convertible<std::ios const&, int>::value), "");
-#if TEST_STD_VER >= 11
-    static_assert((!std::is_convertible<std::ios, bool>::value), "");
-#endif
 }




More information about the cfe-commits mailing list