Fortran: Fix rejecting class arrays of different ranks as storage association argumen...
[official-gcc.git] / libstdc++-v3 / testsuite / util / testsuite_shared.cc
blobe29c0a3501f0f40b3bdefe41918eed9de2e83701
1 // Copyright (C) 2004-2024 Free Software Foundation, Inc.
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.
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/>.
18 #include <string>
19 #include <stdexcept>
20 #include <iostream>
21 #include <sstream>
22 #include <set>
23 #include <map>
24 #include <ext/mt_allocator.h>
25 #include <bits/functexcept.h>
26 #if __cpp_rtti
27 # include <typeinfo>
28 #endif
30 namespace __gnu_test
32 // libstdc++/22309
33 extern "C" void
34 try_allocation()
36 typedef char value_t;
38 typedef __gnu_cxx::__mt_alloc<value_t> allocator_t;
40 typedef std::char_traits<value_t> traits_t;
41 typedef std::basic_string<value_t, traits_t, allocator_t> string_t;
43 string_t s;
44 s += "west beach, indiana dunes";
47 // libstdc++/23591
48 extern "C" void
49 try_throw_exception()
51 #if __cpp_exceptions
52 try
54 std::__throw_bad_exception();
56 catch (const std::exception& e)
57 { }
58 #endif
61 extern "C" void
62 try_function_random_fail()
64 long seed = lrand48();
65 if (seed < 2000)
66 seed = 2000;
69 std::ostringstream s;
70 s << "random_throw, seed: " << seed << std::endl;
71 std::cout << s.str();
74 while (--seed > 0)
76 try_throw_exception();
79 // Randomly throw. See if other threads cleanup.
80 std::__throw_bad_exception();
83 #if __cplusplus >= 201103L
84 # error "must be compiled with C++98"
85 #else
86 void
87 erase_external(std::set<int>& s)
88 { s.erase(s.begin()); }
90 void
91 erase_external(std::multiset<int>& s)
92 { s.erase(s.begin()); }
94 void
95 erase_external(std::map<int, int>& s)
96 { s.erase(s.begin()); }
98 void
99 erase_external(std::multimap<int, int>& s)
100 { s.erase(s.begin()); }
102 void
103 erase_external_iterators(std::set<int>& s)
105 typedef typename std::set<int>::iterator iterator_type;
106 iterator_type iter = s.begin();
107 s.erase(iter, ++iter);
110 void
111 erase_external_iterators(std::multiset<int>& s)
113 typedef typename std::multiset<int>::iterator iterator_type;
114 iterator_type iter = s.begin();
115 s.erase(iter, ++iter);
118 void
119 erase_external_iterators(std::map<int, int>& s)
121 typedef typename std::map<int, int>::iterator iterator_type;
122 iterator_type iter = s.begin();
123 s.erase(iter, ++iter);
127 void
128 erase_external_iterators(std::multimap<int, int>& s)
130 typedef typename std::multimap<int, int>::iterator iterator_type;
131 iterator_type iter = s.begin();
132 s.erase(iter, ++iter);
134 #endif
136 #if __cpp_rtti
137 // PR libstdc++/103240
138 namespace
140 struct S { };
142 const std::type_info& pr103240_private_S = typeid(S);
143 #endif
145 } // end namepace __gnu_test