forked from OSchip/llvm-project
[libc++][nfc] Test std::unique_ptr self move assignment.
The post-conditions for the self move assignment of `std::unique_ptr` were changed. This requires no implementation changes. A test was added to validate the new post-conditions. Addresses - LWG-3455: Incorrect Postconditions on `unique_ptr` move assignment Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D103764
This commit is contained in:
parent
62bd7da889
commit
e7c621a607
|
@ -47,4 +47,4 @@ Library Working Group Issues Status
|
|||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
Last Updated: 01-Mar-2021
|
||||
Last Updated: 6-June-2021
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
"`3448 <https://wg21.link/LWG3448>`__","``transform_view``'s sentinel<false> not comparable with ``iterator<true>``","November 2020","",""
|
||||
"`3449 <https://wg21.link/LWG3449>`__","take_view and take_while_view's ``sentinel<false>`` not comparable with their const iterator","November 2020","",""
|
||||
"`3453 <https://wg21.link/LWG3453>`__","Generic code cannot call ``ranges::advance(i, s)``","November 2020","",""
|
||||
"`3455 <https://wg21.link/LWG3455>`__","Incorrect Postconditions on ``unique_ptr`` move assignment","November 2020","",""
|
||||
"`3455 <https://wg21.link/LWG3455>`__","Incorrect Postconditions on ``unique_ptr`` move assignment","November 2020","|Nothing To Do|",""
|
||||
"`3460 <https://wg21.link/LWG3460>`__","Unimplementable ``noop_coroutine_handle`` guarantees","November 2020","",""
|
||||
"`3461 <https://wg21.link/LWG3461>`__","``convertible_to``'s description mishandles cv-qualified void","November 2020","",""
|
||||
"`3465 <https://wg21.link/LWG3465>`__","compare_partial_order_fallback requires ``F < E``","November 2020","",""
|
||||
|
|
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
// UNSUPPORTED: c++03
|
||||
|
||||
// Self assignement post-conditions are tested.
|
||||
// ADDITIONAL_COMPILE_FLAGS: -Wno-self-move
|
||||
|
||||
// <memory>
|
||||
|
||||
// unique_ptr
|
||||
|
@ -72,6 +75,14 @@ void test_basic() {
|
|||
assert(d2.state() == 5);
|
||||
}
|
||||
assert(A::count == 0);
|
||||
{
|
||||
std::unique_ptr<VT> s(newValue<VT>(expect_alive));
|
||||
A* p = s.get();
|
||||
s = std::move(s);
|
||||
assert(A::count == expect_alive);
|
||||
assert(s.get() == p);
|
||||
}
|
||||
assert(A::count == 0);
|
||||
}
|
||||
|
||||
template <bool IsArray>
|
||||
|
|
Loading…
Reference in New Issue