1//===----------------------------------------------------------------------===//
2//
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
6//
7//===----------------------------------------------------------------------===//
8
9// <memory>
10
11// unique_ptr
12
13// test reset against resetting self
14
15#include <memory>
16
17#include "test_macros.h"
18
19struct A {
20 std::unique_ptr<A> ptr_;
21
22 TEST_CONSTEXPR_CXX23 A() : ptr_(this) {}
23 TEST_CONSTEXPR_CXX23 void reset() { ptr_.reset(); }
24};
25
26TEST_CONSTEXPR_CXX23 bool test() {
27 (new A)->reset();
28
29 return true;
30}
31
32int main(int, char**) {
33 test();
34#if TEST_STD_VER >= 23
35 static_assert(test());
36#endif
37
38 return 0;
39}
40

source code of libcxx/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.modifiers/reset_self.pass.cpp