diff --git a/include/ostream b/include/ostream index f3250a708..197636eac 100644 --- a/include/ostream +++ b/include/ostream @@ -1071,19 +1071,17 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p) return __os << __p.get(); } -#ifndef _LIBCPP_HAS_NO_DECLTYPE template inline _LIBCPP_INLINE_VISIBILITY typename enable_if < - is_same&>() << declval<_Yp>())>::type>::value, + is_same&>() << declval::pointer>()))>::type>::value, basic_ostream<_CharT, _Traits>& >::type operator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p) { return __os << __p.get(); } -#endif template basic_ostream<_CharT, _Traits>& diff --git a/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp b/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp index 48c90f7b9..54c85e943 100644 --- a/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp +++ b/test/std/utilities/memory/unique.ptr/unique.ptr.special/io.fail.cpp @@ -24,11 +24,12 @@ #include #include -class A {}; +#include "min_allocator.h" +#include "deleter_types.h" int main() { - std::unique_ptr p(new A); + std::unique_ptr> p; std::ostringstream os; - os << p; + os << p; // expected-error {{invalid operands to binary expression}} }