]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 20_util / shared_ptr / observers / array.cc
1 // { dg-do run { target c++11 } }
2 // { dg-require-effective-target hosted }
3
4 // Copyright (C) 2016-2024 Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option)
10 // any later version.
11
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
20
21 #include <memory>
22 #include <testsuite_hooks.h>
23
24 struct A
25 {
26 int i = 0;
27 };
28
29 // C++17 20.11.2.2.5 shared_ptr observers [util.smartptr.shared.obs]
30
31 // get
32 void
33 test01()
34 {
35 A * const a = new A[2];
36 const std::shared_ptr<A[2]> p(a);
37 VERIFY( p.get() == a );
38 static_assert( noexcept(p.get()), "non-throwing" );
39 }
40
41 // get
42 void
43 test02()
44 {
45 A * const a = new A[2];
46 const std::shared_ptr<A[]> p(a);
47 VERIFY( p.get() == a );
48 static_assert( noexcept(p.get()), "non-throwing" );
49 }
50
51 // operator[]
52 void
53 test03()
54 {
55 A * const a = new A[2];
56 const std::shared_ptr<A[2]> p(a);
57 VERIFY( &p[0] == a );
58 static_assert( noexcept(p[0]), "non-throwing" );
59 }
60
61 // operator[]
62 void
63 test04()
64 {
65 A * const a = new A[2];
66 const std::shared_ptr<A[]> p(a);
67 VERIFY( &p[0] == a );
68 static_assert( noexcept(p[0]), "non-throwing" );
69 }
70
71 int
72 main()
73 {
74 test01();
75 test02();
76 test03();
77 test04();
78 }