1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
13 // void swap(weak_ptr& r);
18 #include "test_macros.h"
25 A(const A
&) {++count
;}
36 std::shared_ptr
<A
> p1(ptr1
);
37 std::weak_ptr
<A
> w1(p1
);
39 std::shared_ptr
<A
> p2(ptr2
);
40 std::weak_ptr
<A
> w2(p2
);
42 assert(w1
.use_count() == 1);
43 assert(w1
.lock().get() == ptr2
);
44 assert(w2
.use_count() == 1);
45 assert(w2
.lock().get() == ptr1
);
46 assert(A::count
== 2);
49 assert(A::count
== 0);