diff options
Diffstat (limited to 'libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime')
2 files changed, 13 insertions, 46 deletions
diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp index 17375ede00f..ed94c1a1e47 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp @@ -14,26 +14,15 @@ // Test unique_ptr move assignment #include <memory> -#include <utility> -#include <cassert> -// Can't copy from lvalue - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; +#include "test_macros.h" int main() { - { - std::unique_ptr<A> s(new A); - std::unique_ptr<A> s2; - s2 = s; - } + std::unique_ptr<int> s, s2; +#if TEST_STD_VER >= 11 + s2 = s; // expected-error {{cannot be assigned because its copy assignment operator is implicitly deleted}} +#else + s2 = s; // expected-error {{'operator=' is a private member of 'std::__1::unique_ptr}} +#endif } diff --git a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp index b635d507b2e..9d3f94098a0 100644 --- a/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp +++ b/libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: c++98, c++03 + // <memory> // unique_ptr @@ -16,40 +18,16 @@ // unique_ptr<T, const D&>(pointer, D()) should not compile #include <memory> -#include <cassert> - -struct A -{ - static int count; - A() {++count;} - A(const A&) {++count;} - ~A() {--count;} -}; - -int A::count = 0; class Deleter { - int state_; - public: - - Deleter() : state_(5) {} - - int state() const {return state_;} - void set_state(int s) {state_ = s;} - - void operator()(A* p) const {delete [] p;} + Deleter() {} + void operator()(int* p) const {delete [] p;} }; int main() { - { - A* p = new A[3]; - assert(A::count == 3); - std::unique_ptr<A[], const Deleter&> s(p, Deleter()); - assert(s.get() == p); - assert(s.get_deleter().state() == 5); - } - assert(A::count == 0); + int* p = nullptr; + std::unique_ptr<int[], const Deleter&> s(p, Deleter()); // expected-error@memory:* {{static_assert failed "rvalue deleter bound to reference"}} } |