1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // UNSUPPORTED: c++98, c++03
16 // shared_ptr(shared_ptr&& r);
21 #include "test_macros.h"
28 A(const A&) {++count;}
37 std::shared_ptr<A> pA(new A);
38 assert(pA.use_count() == 1);
39 assert(A::count == 1);
42 std::shared_ptr<A> pA2(std::move(pA));
43 assert(A::count == 1);
44 #if TEST_STD_VER >= 11
45 assert(pA.use_count() == 0);
46 assert(pA2.use_count() == 1);
48 assert(pA.use_count() == 2);
49 assert(pA2.use_count() == 2);
51 assert(pA2.get() == p);
53 #if TEST_STD_VER >= 11
54 assert(pA.use_count() == 0);
55 assert(A::count == 0);
57 assert(pA.use_count() == 1);
58 assert(A::count == 1);
61 assert(A::count == 0);
63 std::shared_ptr<A> pA;
64 assert(pA.use_count() == 0);
65 assert(A::count == 0);
67 std::shared_ptr<A> pA2(std::move(pA));
68 assert(A::count == 0);
69 assert(pA.use_count() == 0);
70 assert(pA2.use_count() == 0);
71 assert(pA2.get() == pA.get());
73 assert(pA.use_count() == 0);
74 assert(A::count == 0);
76 assert(A::count == 0);