]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / vector / capacity / resize / strong_guarantee.cc
CommitLineData
83ffe9cd 1// Copyright (C) 2018-2023 Free Software Foundation, Inc.
4c1d999a
DT
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
18#include <vector>
19#include <testsuite_hooks.h>
20
21struct X
22{
23 X() : data(1)
24 {
25 if (fail)
26 throw 1;
27 }
28
29 static bool fail;
30
31 std::vector<int> data;
32};
33
34bool X::fail = false;
35
36void
37test01()
38{
39 std::vector<X> v(2);
40 X* const addr = &v[0];
41 bool caught = false;
42 try {
43 X::fail = true;
44 v.resize(v.capacity() + 1); // force reallocation
45 } catch (int) {
46 caught = true;
47 }
48 VERIFY( caught );
49 VERIFY( v.size() == 2 );
50 VERIFY( &v[0] == addr );
51 // PR libstdc++/83982
52 VERIFY( ! v[0].data.empty() );
53 VERIFY( ! v[1].data.empty() );
54}
55
56int
57main()
58{
59 test01();
60}