1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
%language=C++
%define class-name std_name_hint_lookup
%struct-type
%{
/* Copyright (C) 2022 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
%}
struct std_name_hint
{
/* A name within "std::". */
const char *name;
/* The header name defining it within the C++ Standard Library
(with '<' and '>'). */
const char* header;
/* The dialect of C++ in which this was added. */
enum cxx_dialect min_dialect;
};
%%
# The standard-defined types, functions, and options in the std:: namespace
# as defined in the C++ language specification. The result is used in the
# get_std_name_hint functions.
# throws an exception.
#
# <any>
any, "<any>", cxx17
any_cast, "<any>", cxx17
make_any, "<any>", cxx17
# <array>
array, "<array>", cxx11
to_array, "<array>", cxx20
# <atomic>
atomic, "<atomic>", cxx11
atomic_flag, "<atomic>", cxx11
atomic_ref, "<atomic>", cxx20
# <bitset>
bitset, "<bitset>", cxx11
# <compare>
weak_equality, "<compare>", cxx20
strong_equality, "<compare>", cxx20
partial_ordering, "<compare>", cxx20
weak_ordering, "<compare>", cxx20
strong_ordering, "<compare>", cxx20
# <complex>
complex, "<complex>", cxx98
complex_literals, "<complex>", cxx14
# <condition_variable>. */
condition_variable, "<condition_variable>", cxx11
condition_variable_any, "<condition_variable>", cxx11
# <cstddef>
byte, "<cstddef>", cxx17
# <deque>
deque, "<deque>", cxx98
# <forward_list>
forward_list, "<forward_list>", cxx11
# <fstream>
basic_filebuf, "<fstream>", cxx98
basic_ifstream, "<fstream>", cxx98
basic_ofstream, "<fstream>", cxx98
basic_fstream, "<fstream>", cxx98
fstream, "<fstream>", cxx98
ifstream, "<fstream>", cxx98
ofstream, "<fstream>", cxx98
# <functional>
bind, "<functional>", cxx11
bind_front, "<functional>", cxx20
function, "<functional>", cxx11
hash, "<functional>", cxx11
invoke, "<functional>", cxx17
mem_fn, "<functional>", cxx11
not_fn, "<functional>", cxx17
reference_wrapper, "<functional>", cxx11
unwrap_reference, "<functional>", cxx20
unwrap_reference_t, "<functional>", cxx20
unwrap_ref_decay, "<functional>", cxx20
unwrap_ref_decay_t, "<functional>", cxx20
# <future>. */
async, "<future>", cxx11
future, "<future>", cxx11
packaged_task, "<future>", cxx11
promise, "<future>", cxx11
# <iomanip>
resetiosflags, "<iomanip>", cxx98
setiosflags, "<iomanip>", cxx98
setbase, "<iomanip>", cxx98
setfill, "<iomanip>", cxx98
setprecision, "<iomanip>", cxx98
setw, "<iomanip>", cxx98
get_money, "<iomanip>", cxx11
put_money, "<iomanip>", cxx11
get_time, "<iomanip>", cxx11
put_time, "<iomanip>", cxx11
quoted, "<iomanip>", cxx14
# <ios>
boolalpha, "<ios>", cxx98
noboolalpha, "<ios>", cxx98
showbase, "<ios>", cxx98
noshowbase, "<ios>", cxx98
showpoint, "<ios>", cxx98
noshowpoint, "<ios>", cxx98
showpos, "<ios>", cxx98
noshowpos, "<ios>", cxx98
skipws, "<ios>", cxx98
noskipws, "<ios>", cxx98
uppercase, "<ios>", cxx98
nouppercase, "<ios>", cxx98
unitbuf, "<ios>", cxx98
nounitbuf, "<ios>", cxx98
internal, "<ios>", cxx98
left, "<ios>", cxx98
right, "<ios>", cxx98
dec, "<ios>", cxx98
hex, "<ios>", cxx98
oct, "<ios>", cxx98
fixed, "<ios>", cxx98
scientific, "<ios>", cxx98
hexfloat, "<ios>", cxx11
defaultfloat, "<ios>", cxx11
# <iostream>
cin, "<iostream>", cxx98
cout, "<iostream>", cxx98
cerr, "<iostream>", cxx98
clog, "<iostream>", cxx98
wcin, "<iostream>", cxx98
wcout, "<iostream>", cxx98
wclog, "<iostream>", cxx98
# <istream>
istream, "<istream>", cxx98
ws, "<istream>", cxx98
# <iterator>
advance, "<iterator>", cxx98
back_inserter, "<iterator>", cxx98
begin, "<iterator>", cxx11
distance, "<iterator>", cxx98
end, "<iterator>", cxx11
front_inserter, "<iterator>", cxx98
inserter, "<iterator>", cxx98
istream_iterator, "<iterator>", cxx98
istreambuf_iterator, "<iterator>", cxx98
iterator_traits, "<iterator>", cxx98
move_iterator, "<iterator>", cxx11
next, "<iterator>", cxx11
ostream_iterator, "<iterator>", cxx98
ostreambuf_iterator, "<iterator>", cxx98
prev, "<iterator>", cxx11
reverse_iterator, "<iterator>", cxx98
# <ostream>
ostream, "<ostream>", cxx98
ends, "<ostream>", cxx98
flush, "<ostream>", cxx98
endl, "<ostream>", cxx98
emit_on_flush, "<ostream>", cxx20
noemit_on_flush, "<ostream>", cxx20
flush_emit, "<ostream>", cxx20
# <list>
list, "<list>", cxx98
# <map>
map, "<map>", cxx98
multimap, "<map>", cxx98
# <memory>
allocate_shared, "<memory>", cxx11
allocator, "<memory>", cxx98
allocator_traits, "<memory>", cxx11
make_shared, "<memory>", cxx11
make_unique, "<memory>", cxx14
shared_ptr, "<memory>", cxx11
unique_ptr, "<memory>", cxx11
weak_ptr, "<memory>", cxx11
# <memory_resource>
pmr, "<memory_resource>", cxx17
# <mutex>
mutex, "<mutex>", cxx11
timed_mutex, "<mutex>", cxx11
recursive_mutex, "<mutex>", cxx11
recursive_timed_mutex, "<mutex>", cxx11
once_flag, "<mutex>", cxx11
call_once, "<mutex>", cxx11
lock, "<mutex>", cxx11
scoped_lock, "<mutex>", cxx17
try_lock, "<mutex>", cxx11
lock_guard, "<mutex>", cxx11
unique_lock, "<mutex>", cxx11
# <optional>. */
optional, "<optional>", cxx17
make_optional, "<optional>", cxx17
# <ostream>
ostream, "<ostream>", cxx98
wostream, "<ostream>", cxx98
ends, "<ostream>", cxx98
flush, "<ostream>", cxx98
endl, "<ostream>", cxx98
# <queue>
queue, "<queue>", cxx98
priority_queue, "<queue>", cxx98
# <set>
set, "<set>", cxx98
multiset, "<set>", cxx98
# <shared_mutex>
shared_lock, "<shared_mutex>", cxx14
shared_mutex, "<shared_mutex>", cxx17
shared_timed_mutex, "<shared_mutex>", cxx14
# <source_location>
source_location, "<source_location>", cxx20
# <sstream>
basic_stringbuf, "<sstream>", cxx98
basic_istringstream, "<sstream>", cxx98
basic_ostringstream, "<sstream>", cxx98
basic_stringstream, "<sstream>", cxx98
istringstream, "<sstream>", cxx98
ostringstream, "<sstream>", cxx98
stringstream, "<sstream>", cxx98
# <stack>
stack, "<stack>", cxx98
# <string>
basic_string, "<string>", cxx98
string, "<string>", cxx98
wstring, "<string>", cxx98
u8string, "<string>", cxx20
u16string, "<string>", cxx11
u32string, "<string>", cxx11
# <string_view>
basic_string_view, "<string_view>", cxx17
string_view, "<string_view>", cxx17
# <thread>
thread, "<thread>", cxx11
this_thread, "<thread>", cxx11
# <tuple>
apply, "<tuple>", cxx17
forward_as_tuple, "<tuple>", cxx11
make_from_tuple, "<tuple>", cxx17
make_tuple, "<tuple>", cxx11
tie, "<tuple>", cxx11
tuple, "<tuple>", cxx11
tuple_cat, "<tuple>", cxx11
tuple_element, "<tuple>", cxx11
tuple_element_t, "<tuple>", cxx14
tuple_size, "<tuple>", cxx11
tuple_size_v, "<tuple>", cxx17
# <type_traits>
enable_if, "<type_traits>", cxx11
enable_if_t, "<type_traits>", cxx14
invoke_result, "<type_traits>", cxx17
invoke_result_t, "<type_traits>", cxx17
remove_cvref, "<type_traits>", cxx20
remove_cvref_t, "<type_traits>", cxx20
type_identity, "<type_traits>", cxx20
type_identity_t, "<type_traits>", cxx20
void_t, "<type_traits>", cxx17
conjunction, "<type_traits>", cxx17
conjunction_v, "<type_traits>", cxx17
disjunction, "<type_traits>", cxx17
disjunction_v, "<type_traits>", cxx17
negation, "<type_traits>", cxx17
negation_v, "<type_traits>", cxx17
# <unordered_map>
unordered_map, "<unordered_map>", cxx11
unordered_multimap, "<unordered_map>", cxx11
# <unordered_set>
unordered_set, "<unordered_set>", cxx11
unordered_multiset, "<unordered_set>", cxx11
# <utility>
declval, "<utility>", cxx11
forward, "<utility>", cxx11
make_pair, "<utility>", cxx98
move, "<utility>", cxx11
pair, "<utility>", cxx98
# <variant>
variant, "<variant>", cxx17
visit, "<variant>", cxx17
# <vector>
vector, "<vector>", cxx98
|