From Jason Turner

[gram.dcl]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpncnjyz98/{from.md → to.md} +307 -261
tmp/tmpncnjyz98/{from.md → to.md} RENAMED
@@ -13,22 +13,25 @@ declaration:
13
  function-definition
14
  template-declaration
15
  deduction-guide
16
  explicit-instantiation
17
  explicit-specialization
 
18
  linkage-specification
19
  namespace-definition
20
  empty-declaration
21
  attribute-declaration
 
22
  ```
23
 
24
  ``` bnf
25
  block-declaration:
26
  simple-declaration
27
- asm-definition
28
  namespace-alias-definition
29
  using-declaration
 
30
  using-directive
31
  static_assert-declaration
32
  alias-declaration
33
  opaque-enum-declaration
34
  ```
@@ -38,11 +41,11 @@ nodeclspec-function-declaration:
38
  attribute-specifier-seqₒₚₜ declarator ';'
39
  ```
40
 
41
  ``` bnf
42
  alias-declaration:
43
- 'using' identifier attribute-specifier-seqₒₚₜ '=' defining-type-id ';'
44
  ```
45
 
46
  ``` bnf
47
  simple-declaration:
48
  decl-specifier-seq init-declarator-listₒₚₜ ';'
@@ -63,39 +66,48 @@ attribute-declaration:
63
  ``` bnf
64
  decl-specifier:
65
  storage-class-specifier
66
  defining-type-specifier
67
  function-specifier
68
- 'friend'
69
- 'typedef'
70
- 'constexpr'
71
- 'inline'
 
 
72
  ```
73
 
74
  ``` bnf
75
  decl-specifier-seq:
76
  decl-specifier attribute-specifier-seqₒₚₜ
77
  decl-specifier decl-specifier-seq
78
  ```
79
 
80
  ``` bnf
81
  storage-class-specifier:
82
- 'static'
83
- 'thread_local'
84
- 'extern'
85
- 'mutable'
86
  ```
87
 
88
  ``` bnf
89
  function-specifier:
90
- 'virtual'
91
- 'explicit'
 
 
 
 
 
 
92
  ```
93
 
94
  ``` bnf
95
  typedef-name:
96
  identifier
 
97
  ```
98
 
99
  ``` bnf
100
  type-specifier:
101
  simple-type-specifier
@@ -124,260 +136,59 @@ defining-type-specifier-seq:
124
  ```
125
 
126
  ``` bnf
127
  simple-type-specifier:
128
  nested-name-specifierₒₚₜ type-name
129
- nested-name-specifier 'template' simple-template-id
130
- nested-name-specifierₒₚₜ template-name
131
- 'char'
132
- 'char16_t'
133
- 'char32_t'
134
- 'wchar_t'
135
- 'bool'
136
- 'short'
137
- 'int'
138
- 'long'
139
- 'signed'
140
- 'unsigned'
141
- 'float'
142
- 'double'
143
- 'void'
144
- 'auto'
145
  decltype-specifier
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  ```
147
 
148
  ``` bnf
149
  type-name:
150
  class-name
151
  enum-name
152
  typedef-name
153
- simple-template-id
154
- ```
155
-
156
- ``` bnf
157
- decltype-specifier:
158
- 'decltype' '(' expression ')'
159
- 'decltype' '(' 'auto' ')'
160
  ```
161
 
162
  ``` bnf
163
  elaborated-type-specifier:
164
  class-key attribute-specifier-seqₒₚₜ nested-name-specifierₒₚₜ identifier
165
  class-key simple-template-id
166
- class-key nested-name-specifier 'template'ₒₚₜ simple-template-id
167
- 'enum' nested-name-specifierₒₚₜ identifier
168
  ```
169
 
170
  ``` bnf
171
- enum-name:
172
- identifier
173
  ```
174
 
175
  ``` bnf
176
- enum-specifier:
177
- enum-head '{' enumerator-listₒₚₜ '}'
178
- enum-head '{' enumerator-list ', }'
179
  ```
180
 
181
  ``` bnf
182
- enum-head:
183
- enum-key attribute-specifier-seqₒₚₜ enum-head-nameₒₚₜ enum-baseₒₚₜ
184
- ```
185
-
186
- ``` bnf
187
- enum-head-name:
188
- nested-name-specifierₒₚₜ identifier
189
- ```
190
-
191
- ``` bnf
192
- opaque-enum-declaration:
193
- enum-key attribute-specifier-seqₒₚₜ nested-name-specifierₒₚₜ identifier enum-baseₒₚₜ ';'
194
- ```
195
-
196
- ``` bnf
197
- enum-key:
198
- 'enum'
199
- 'enum class'
200
- 'enum struct'
201
- ```
202
-
203
- ``` bnf
204
- enum-base:
205
- ':' type-specifier-seq
206
- ```
207
-
208
- ``` bnf
209
- enumerator-list:
210
- enumerator-definition
211
- enumerator-list ',' enumerator-definition
212
- ```
213
-
214
- ``` bnf
215
- enumerator-definition:
216
- enumerator
217
- enumerator '=' constant-expression
218
- ```
219
-
220
- ``` bnf
221
- enumerator:
222
- identifier attribute-specifier-seqₒₚₜ
223
- ```
224
-
225
- ``` bnf
226
- namespace-name:
227
- identifier
228
- namespace-alias
229
- ```
230
-
231
- ``` bnf
232
- namespace-definition:
233
- named-namespace-definition
234
- unnamed-namespace-definition
235
- nested-namespace-definition
236
- ```
237
-
238
- ``` bnf
239
- named-namespace-definition:
240
- 'inline'ₒₚₜ 'namespace' attribute-specifier-seqₒₚₜ identifier '{' namespace-body '}'
241
- ```
242
-
243
- ``` bnf
244
- unnamed-namespace-definition:
245
- 'inline'ₒₚₜ 'namespace' attribute-specifier-seqₒₚₜ '{' namespace-body '}'
246
- ```
247
-
248
- ``` bnf
249
- nested-namespace-definition:
250
- 'namespace' enclosing-namespace-specifier '::' identifier '{' namespace-body '}'
251
- ```
252
-
253
- ``` bnf
254
- enclosing-namespace-specifier:
255
- identifier
256
- enclosing-namespace-specifier '::' identifier
257
- ```
258
-
259
- ``` bnf
260
- namespace-body:
261
- declaration-seqₒₚₜ
262
- ```
263
-
264
- ``` bnf
265
- namespace-alias:
266
- identifier
267
- ```
268
-
269
- ``` bnf
270
- namespace-alias-definition:
271
- 'namespace' identifier '=' qualified-namespace-specifier ';'
272
- ```
273
-
274
- ``` bnf
275
- qualified-namespace-specifier:
276
- nested-name-specifierₒₚₜ namespace-name
277
- ```
278
-
279
- ``` bnf
280
- using-declaration:
281
- 'using' using-declarator-list ';'
282
- ```
283
-
284
- ``` bnf
285
- using-declarator-list:
286
- using-declarator '...'ₒₚₜ
287
- using-declarator-list ',' using-declarator '...'ₒₚₜ
288
- ```
289
-
290
- ``` bnf
291
- using-declarator:
292
- 'typename'ₒₚₜ nested-name-specifier unqualified-id
293
- ```
294
-
295
- ``` bnf
296
- using-directive:
297
- attribute-specifier-seqₒₚₜ 'using namespace' nested-name-specifierₒₚₜ namespace-name ';'
298
- ```
299
-
300
- ``` bnf
301
- asm-definition:
302
- attribute-specifier-seqₒₚₜ 'asm (' string-literal ') ;'
303
- ```
304
-
305
- ``` bnf
306
- linkage-specification:
307
- 'extern' string-literal '{' declaration-seqₒₚₜ '}'
308
- 'extern' string-literal declaration
309
- ```
310
-
311
- ``` bnf
312
- attribute-specifier-seq:
313
- attribute-specifier-seqₒₚₜ attribute-specifier
314
- ```
315
-
316
- ``` bnf
317
- attribute-specifier:
318
- '[' '[' attribute-using-prefixₒₚₜ attribute-list ']' ']'
319
- alignment-specifier
320
- ```
321
-
322
- ``` bnf
323
- alignment-specifier:
324
- 'alignas (' type-id '...'ₒₚₜ ')'
325
- 'alignas (' constant-expression '...'ₒₚₜ ')'
326
- ```
327
-
328
- ``` bnf
329
- attribute-using-prefix:
330
- 'using' attribute-namespace ':'
331
- ```
332
-
333
- ``` bnf
334
- attribute-list:
335
- attributeₒₚₜ
336
- attribute-list ',' attributeₒₚₜ
337
- attribute '...'
338
- attribute-list ',' attribute '...'
339
- ```
340
-
341
- ``` bnf
342
- attribute:
343
- attribute-token attribute-argument-clauseₒₚₜ
344
- ```
345
-
346
- ``` bnf
347
- attribute-token:
348
- identifier
349
- attribute-scoped-token
350
- ```
351
-
352
- ``` bnf
353
- attribute-scoped-token:
354
- attribute-namespace '::' identifier
355
- ```
356
-
357
- ``` bnf
358
- attribute-namespace:
359
- identifier
360
- ```
361
-
362
- ``` bnf
363
- attribute-argument-clause:
364
- '(' balanced-token-seqₒₚₜ ')'
365
- ```
366
-
367
- ``` bnf
368
- balanced-token-seq:
369
- balanced-token
370
- balanced-token-seq balanced-token
371
- ```
372
-
373
- ``` bnf
374
- balanced-token:
375
- '(' balanced-token-seqₒₚₜ ')'
376
- '[' balanced-token-seqₒₚₜ ']'
377
- '{' balanced-token-seqₒₚₜ '}'
378
- any *token* other than a parenthesis, a bracket, or a brace
379
  ```
380
 
381
  ``` bnf
382
  init-declarator-list:
383
  init-declarator
@@ -385,10 +196,11 @@ init-declarator-list:
385
  ```
386
 
387
  ``` bnf
388
  init-declarator:
389
  declarator initializerₒₚₜ
 
390
  ```
391
 
392
  ``` bnf
393
  declarator:
394
  ptr-declarator
@@ -433,12 +245,12 @@ cv-qualifier-seq:
433
  cv-qualifier cv-qualifier-seqₒₚₜ
434
  ```
435
 
436
  ``` bnf
437
  cv-qualifier:
438
- 'const'
439
- 'volatile'
440
  ```
441
 
442
  ``` bnf
443
  ref-qualifier:
444
  '&'
@@ -494,11 +306,11 @@ noptr-abstract-pack-declarator:
494
  ```
495
 
496
  ``` bnf
497
  parameter-declaration-clause:
498
  parameter-declaration-listₒₚₜ '...'ₒₚₜ
499
- parameter-declaration-list ', ...'
500
  ```
501
 
502
  ``` bnf
503
  parameter-declaration-list:
504
  parameter-declaration
@@ -511,23 +323,10 @@ parameter-declaration:
511
  attribute-specifier-seqₒₚₜ decl-specifier-seq declarator '=' initializer-clause
512
  attribute-specifier-seqₒₚₜ decl-specifier-seq abstract-declaratorₒₚₜ
513
  attribute-specifier-seqₒₚₜ decl-specifier-seq abstract-declaratorₒₚₜ '=' initializer-clause
514
  ```
515
 
516
- ``` bnf
517
- function-definition:
518
- attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator virt-specifier-seqₒₚₜ function-body
519
- ```
520
-
521
- ``` bnf
522
- function-body:
523
- ctor-initializerₒₚₜ compound-statement
524
- function-try-block
525
- '= default ;'
526
- '= delete ;'
527
- ```
528
-
529
  ``` bnf
530
  initializer:
531
  brace-or-equal-initializer
532
  '(' expression-list ')'
533
  ```
@@ -542,24 +341,271 @@ brace-or-equal-initializer:
542
  initializer-clause:
543
  assignment-expression
544
  braced-init-list
545
  ```
546
 
547
- ``` bnf
548
- initializer-list:
549
- initializer-clause '...'ₒₚₜ
550
- initializer-list ',' initializer-clause '...'ₒₚₜ
551
- ```
552
-
553
  ``` bnf
554
  braced-init-list:
555
  '{' initializer-list ','ₒₚₜ '}'
 
556
  '{' '}'
557
  ```
558
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  ``` bnf
560
  expr-or-braced-init-list:
561
  expression
562
  braced-init-list
563
  ```
564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
565
 
 
13
  function-definition
14
  template-declaration
15
  deduction-guide
16
  explicit-instantiation
17
  explicit-specialization
18
+ export-declaration
19
  linkage-specification
20
  namespace-definition
21
  empty-declaration
22
  attribute-declaration
23
+ module-import-declaration
24
  ```
25
 
26
  ``` bnf
27
  block-declaration:
28
  simple-declaration
29
+ asm-declaration
30
  namespace-alias-definition
31
  using-declaration
32
+ using-enum-declaration
33
  using-directive
34
  static_assert-declaration
35
  alias-declaration
36
  opaque-enum-declaration
37
  ```
 
41
  attribute-specifier-seqₒₚₜ declarator ';'
42
  ```
43
 
44
  ``` bnf
45
  alias-declaration:
46
+ using identifier attribute-specifier-seqₒₚₜ '=' defining-type-id ';'
47
  ```
48
 
49
  ``` bnf
50
  simple-declaration:
51
  decl-specifier-seq init-declarator-listₒₚₜ ';'
 
66
  ``` bnf
67
  decl-specifier:
68
  storage-class-specifier
69
  defining-type-specifier
70
  function-specifier
71
+ friend
72
+ typedef
73
+ constexpr
74
+ consteval
75
+ constinit
76
+ inline
77
  ```
78
 
79
  ``` bnf
80
  decl-specifier-seq:
81
  decl-specifier attribute-specifier-seqₒₚₜ
82
  decl-specifier decl-specifier-seq
83
  ```
84
 
85
  ``` bnf
86
  storage-class-specifier:
87
+ static
88
+ thread_local
89
+ extern
90
+ mutable
91
  ```
92
 
93
  ``` bnf
94
  function-specifier:
95
+ virtual
96
+ explicit-specifier
97
+ ```
98
+
99
+ ``` bnf
100
+ explicit-specifier:
101
+ explicit '(' constant-expression ')'
102
+ explicit
103
  ```
104
 
105
  ``` bnf
106
  typedef-name:
107
  identifier
108
+ simple-template-id
109
  ```
110
 
111
  ``` bnf
112
  type-specifier:
113
  simple-type-specifier
 
136
  ```
137
 
138
  ``` bnf
139
  simple-type-specifier:
140
  nested-name-specifierₒₚₜ type-name
141
+ nested-name-specifier template simple-template-id
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  decltype-specifier
143
+ placeholder-type-specifier
144
+ nested-name-specifierₒₚₜ template-name
145
+ char
146
+ char8_t
147
+ char16_t
148
+ char32_t
149
+ wchar_t
150
+ bool
151
+ short
152
+ int
153
+ long
154
+ signed
155
+ unsigned
156
+ float
157
+ double
158
+ void
159
  ```
160
 
161
  ``` bnf
162
  type-name:
163
  class-name
164
  enum-name
165
  typedef-name
 
 
 
 
 
 
 
166
  ```
167
 
168
  ``` bnf
169
  elaborated-type-specifier:
170
  class-key attribute-specifier-seqₒₚₜ nested-name-specifierₒₚₜ identifier
171
  class-key simple-template-id
172
+ class-key nested-name-specifier templateₒₚₜ simple-template-id
173
+ elaborated-enum-specifier
174
  ```
175
 
176
  ``` bnf
177
+ elaborated-enum-specifier:
178
+ enum nested-name-specifierₒₚₜ identifier
179
  ```
180
 
181
  ``` bnf
182
+ decltype-specifier:
183
+ decltype '(' expression ')'
 
184
  ```
185
 
186
  ``` bnf
187
+ placeholder-type-specifier:
188
+ type-constraintₒₚₜ auto
189
+ type-constraintₒₚₜ decltype '(' auto ')'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  ```
191
 
192
  ``` bnf
193
  init-declarator-list:
194
  init-declarator
 
196
  ```
197
 
198
  ``` bnf
199
  init-declarator:
200
  declarator initializerₒₚₜ
201
+ declarator requires-clause
202
  ```
203
 
204
  ``` bnf
205
  declarator:
206
  ptr-declarator
 
245
  cv-qualifier cv-qualifier-seqₒₚₜ
246
  ```
247
 
248
  ``` bnf
249
  cv-qualifier:
250
+ const
251
+ volatile
252
  ```
253
 
254
  ``` bnf
255
  ref-qualifier:
256
  '&'
 
306
  ```
307
 
308
  ``` bnf
309
  parameter-declaration-clause:
310
  parameter-declaration-listₒₚₜ '...'ₒₚₜ
311
+ parameter-declaration-list ',' '...'
312
  ```
313
 
314
  ``` bnf
315
  parameter-declaration-list:
316
  parameter-declaration
 
323
  attribute-specifier-seqₒₚₜ decl-specifier-seq declarator '=' initializer-clause
324
  attribute-specifier-seqₒₚₜ decl-specifier-seq abstract-declaratorₒₚₜ
325
  attribute-specifier-seqₒₚₜ decl-specifier-seq abstract-declaratorₒₚₜ '=' initializer-clause
326
  ```
327
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  ``` bnf
329
  initializer:
330
  brace-or-equal-initializer
331
  '(' expression-list ')'
332
  ```
 
341
  initializer-clause:
342
  assignment-expression
343
  braced-init-list
344
  ```
345
 
 
 
 
 
 
 
346
  ``` bnf
347
  braced-init-list:
348
  '{' initializer-list ','ₒₚₜ '}'
349
+ '{' designated-initializer-list ','ₒₚₜ '}'
350
  '{' '}'
351
  ```
352
 
353
+ ``` bnf
354
+ initializer-list:
355
+ initializer-clause '...'ₒₚₜ
356
+ initializer-list ',' initializer-clause '...'ₒₚₜ
357
+ ```
358
+
359
+ ``` bnf
360
+ designated-initializer-list:
361
+ designated-initializer-clause
362
+ designated-initializer-list ',' designated-initializer-clause
363
+ ```
364
+
365
+ ``` bnf
366
+ designated-initializer-clause:
367
+ designator brace-or-equal-initializer
368
+ ```
369
+
370
+ ``` bnf
371
+ designator:
372
+ '.' identifier
373
+ ```
374
+
375
  ``` bnf
376
  expr-or-braced-init-list:
377
  expression
378
  braced-init-list
379
  ```
380
 
381
+ ``` bnf
382
+ function-definition:
383
+ attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator virt-specifier-seqₒₚₜ function-body
384
+ attribute-specifier-seqₒₚₜ decl-specifier-seqₒₚₜ declarator requires-clause function-body
385
+ ```
386
+
387
+ ``` bnf
388
+ function-body:
389
+ ctor-initializerₒₚₜ compound-statement
390
+ function-try-block
391
+ '=' default ';'
392
+ '=' delete ';'
393
+ ```
394
+
395
+ ``` bnf
396
+ enum-name:
397
+ identifier
398
+ ```
399
+
400
+ ``` bnf
401
+ enum-specifier:
402
+ enum-head '{' enumerator-listₒₚₜ '}'
403
+ enum-head '{' enumerator-list ',' '}'
404
+ ```
405
+
406
+ ``` bnf
407
+ enum-head:
408
+ enum-key attribute-specifier-seqₒₚₜ enum-head-nameₒₚₜ enum-baseₒₚₜ
409
+ ```
410
+
411
+ ``` bnf
412
+ enum-head-name:
413
+ nested-name-specifierₒₚₜ identifier
414
+ ```
415
+
416
+ ``` bnf
417
+ opaque-enum-declaration:
418
+ enum-key attribute-specifier-seqₒₚₜ enum-head-name enum-baseₒₚₜ ';'
419
+ ```
420
+
421
+ ``` bnf
422
+ enum-key:
423
+ enum
424
+ enum class
425
+ enum struct
426
+ ```
427
+
428
+ ``` bnf
429
+ enum-base:
430
+ ':' type-specifier-seq
431
+ ```
432
+
433
+ ``` bnf
434
+ enumerator-list:
435
+ enumerator-definition
436
+ enumerator-list ',' enumerator-definition
437
+ ```
438
+
439
+ ``` bnf
440
+ enumerator-definition:
441
+ enumerator
442
+ enumerator '=' constant-expression
443
+ ```
444
+
445
+ ``` bnf
446
+ enumerator:
447
+ identifier attribute-specifier-seqₒₚₜ
448
+ ```
449
+
450
+ ``` bnf
451
+ using-enum-declaration:
452
+ 'using' elaborated-enum-specifier ';'
453
+ ```
454
+
455
+ ``` bnf
456
+ namespace-name:
457
+ identifier
458
+ namespace-alias
459
+ ```
460
+
461
+ ``` bnf
462
+ namespace-definition:
463
+ named-namespace-definition
464
+ unnamed-namespace-definition
465
+ nested-namespace-definition
466
+ ```
467
+
468
+ ``` bnf
469
+ named-namespace-definition:
470
+ inlineₒₚₜ namespace attribute-specifier-seqₒₚₜ identifier '{' namespace-body '}'
471
+ ```
472
+
473
+ ``` bnf
474
+ unnamed-namespace-definition:
475
+ inlineₒₚₜ namespace attribute-specifier-seqₒₚₜ '{' namespace-body '}'
476
+ ```
477
+
478
+ ``` bnf
479
+ nested-namespace-definition:
480
+ namespace enclosing-namespace-specifier '::' inlineₒₚₜ identifier '{' namespace-body '}'
481
+ ```
482
+
483
+ ``` bnf
484
+ enclosing-namespace-specifier:
485
+ identifier
486
+ enclosing-namespace-specifier '::' inlineₒₚₜ identifier
487
+ ```
488
+
489
+ ``` bnf
490
+ namespace-body:
491
+ declaration-seqₒₚₜ
492
+ ```
493
+
494
+ ``` bnf
495
+ namespace-alias:
496
+ identifier
497
+ ```
498
+
499
+ ``` bnf
500
+ namespace-alias-definition:
501
+ namespace identifier '=' qualified-namespace-specifier ';'
502
+ ```
503
+
504
+ ``` bnf
505
+ qualified-namespace-specifier:
506
+ nested-name-specifierₒₚₜ namespace-name
507
+ ```
508
+
509
+ ``` bnf
510
+ using-directive:
511
+ attribute-specifier-seqₒₚₜ using namespace nested-name-specifierₒₚₜ namespace-name ';'
512
+ ```
513
+
514
+ ``` bnf
515
+ using-declaration:
516
+ using using-declarator-list ';'
517
+ ```
518
+
519
+ ``` bnf
520
+ using-declarator-list:
521
+ using-declarator '...'ₒₚₜ
522
+ using-declarator-list ',' using-declarator '...'ₒₚₜ
523
+ ```
524
+
525
+ ``` bnf
526
+ using-declarator:
527
+ typenameₒₚₜ nested-name-specifier unqualified-id
528
+ ```
529
+
530
+ ``` bnf
531
+ asm-declaration:
532
+ attribute-specifier-seqₒₚₜ asm '(' string-literal ')' ';'
533
+ ```
534
+
535
+ ``` bnf
536
+ linkage-specification:
537
+ extern string-literal '{' declaration-seqₒₚₜ '}'
538
+ extern string-literal declaration
539
+ ```
540
+
541
+ ``` bnf
542
+ attribute-specifier-seq:
543
+ attribute-specifier-seqₒₚₜ attribute-specifier
544
+ ```
545
+
546
+ ``` bnf
547
+ attribute-specifier:
548
+ '[' '[' attribute-using-prefixₒₚₜ attribute-list ']' ']'
549
+ alignment-specifier
550
+ ```
551
+
552
+ ``` bnf
553
+ alignment-specifier:
554
+ alignas '(' type-id '...'ₒₚₜ ')'
555
+ alignas '(' constant-expression '...'ₒₚₜ ')'
556
+ ```
557
+
558
+ ``` bnf
559
+ attribute-using-prefix:
560
+ using attribute-namespace ':'
561
+ ```
562
+
563
+ ``` bnf
564
+ attribute-list:
565
+ attributeₒₚₜ
566
+ attribute-list ',' attributeₒₚₜ
567
+ attribute '...'
568
+ attribute-list ',' attribute '...'
569
+ ```
570
+
571
+ ``` bnf
572
+ attribute:
573
+ attribute-token attribute-argument-clauseₒₚₜ
574
+ ```
575
+
576
+ ``` bnf
577
+ attribute-token:
578
+ identifier
579
+ attribute-scoped-token
580
+ ```
581
+
582
+ ``` bnf
583
+ attribute-scoped-token:
584
+ attribute-namespace '::' identifier
585
+ ```
586
+
587
+ ``` bnf
588
+ attribute-namespace:
589
+ identifier
590
+ ```
591
+
592
+ ``` bnf
593
+ attribute-argument-clause:
594
+ '(' balanced-token-seqₒₚₜ ')'
595
+ ```
596
+
597
+ ``` bnf
598
+ balanced-token-seq:
599
+ balanced-token
600
+ balanced-token-seq balanced-token
601
+ ```
602
+
603
+ ``` bnf
604
+ balanced-token:
605
+ '(' balanced-token-seqₒₚₜ ')'
606
+ '[' balanced-token-seqₒₚₜ ']'
607
+ '{' balanced-token-seqₒₚₜ '}'
608
+ any *token* other than a parenthesis, a bracket, or a brace
609
+ ```
610
+
611