diff --git a/include/ios b/include/ios index dfeb1f62e..cbea478a7 100644 --- a/include/ios +++ b/include/ios @@ -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);} diff --git a/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp b/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp index 4e3faa27c..0de889e54 100644 --- a/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp +++ b/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp @@ -14,21 +14,12 @@ // operator unspecified-bool-type() const; #include -#include #include -#include "test_macros.h" - int main() { std::ios ios(0); assert(static_cast(ios) == !ios.fail()); ios.setstate(std::ios::failbit); assert(static_cast(ios) == !ios.fail()); - static_assert((!std::is_convertible::value), ""); - static_assert((!std::is_convertible::value), ""); - static_assert((!std::is_convertible::value), ""); -#if TEST_STD_VER >= 11 - static_assert((!std::is_convertible::value), ""); -#endif }