]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 20_util / enable_shared_from_this / members / weak_from_this.cc
CommitLineData
83ffe9cd 1// Copyright (C) 2015-2023 Free Software Foundation, Inc.
3625264f
JW
2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
6458742a 18// { dg-do run { target c++17 } }
7cc9022f 19// { dg-require-effective-target hosted }
3625264f
JW
20
21#include <memory>
22#include <testsuite_hooks.h>
23
24#if __cpp_lib_enable_shared_from_this < 201603
25# error "__cpp_lib_enable_shared_from_this < 201603"
26#endif
27
28struct X : public std::enable_shared_from_this<X> { };
29
208b8b69
JW
30static_assert( noexcept(std::declval<X&>().weak_from_this()) );
31static_assert( noexcept(std::declval<const X&>().weak_from_this()) );
32
3625264f
JW
33void
34test01()
35{
36 std::shared_ptr<X> sp(new X);
37 auto wp1 = sp->weak_from_this();
38 std::weak_ptr<X> wp2 = sp;
39
40 std::owner_less<> less;
41 VERIFY( !less(wp1, wp2) && !less(wp2, wp1) );
42 VERIFY( !less(wp1, wp2) && !less(wp2, wp1) );
43}
44
45int
46main()
47{
48 test01();
49}