GNU Bison XML Automaton Report

input grammar: cplusplus.y

Table of Contents

Reductions

Nonterminals useless in grammar

Terminals unused in grammar

Rules useless in grammar

Conflicts

State 0 conflicts: 41 shift/reduce, 3 reduce/reduce State 2 conflicts: 39 shift/reduce, 3 reduce/reduce State 4 conflicts: 1 reduce/reduce State 10 conflicts: 1 shift/reduce State 22 conflicts: 3 shift/reduce, 1 reduce/reduce State 23 conflicts: 1 shift/reduce State 25 conflicts: 1 shift/reduce State 50 conflicts: 36 shift/reduce, 3 reduce/reduce State 51 conflicts: 8 shift/reduce, 5 reduce/reduce State 54 conflicts: 3 shift/reduce State 58 conflicts: 3 shift/reduce, 2 reduce/reduce State 59 conflicts: 3 shift/reduce State 61 conflicts: 40 shift/reduce, 3 reduce/reduce State 63 conflicts: 1 shift/reduce State 75 conflicts: 1 reduce/reduce State 89 conflicts: 1 shift/reduce, 1 reduce/reduce State 96 conflicts: 100 reduce/reduce State 101 conflicts: 39 shift/reduce, 3 reduce/reduce State 115 conflicts: 39 shift/reduce, 3 reduce/reduce State 117 conflicts: 61 reduce/reduce State 119 conflicts: 39 shift/reduce, 3 reduce/reduce State 120 conflicts: 5 shift/reduce, 1 reduce/reduce State 122 conflicts: 1 shift/reduce State 125 conflicts: 1 shift/reduce State 130 conflicts: 2 shift/reduce State 133 conflicts: 1 shift/reduce, 1 reduce/reduce State 135 conflicts: 2 shift/reduce State 136 conflicts: 40 shift/reduce, 3 reduce/reduce State 138 conflicts: 1 shift/reduce State 142 conflicts: 1 shift/reduce State 147 conflicts: 2 shift/reduce State 148 conflicts: 39 shift/reduce, 3 reduce/reduce State 153 conflicts: 3 shift/reduce State 159 conflicts: 3 shift/reduce State 168 conflicts: 2 shift/reduce State 169 conflicts: 3 shift/reduce State 172 conflicts: 1 shift/reduce, 1 reduce/reduce State 173 conflicts: 1 shift/reduce State 175 conflicts: 3 shift/reduce State 176 conflicts: 3 shift/reduce, 1 reduce/reduce State 178 conflicts: 1 shift/reduce State 179 conflicts: 1 shift/reduce State 180 conflicts: 1 reduce/reduce State 181 conflicts: 2 shift/reduce State 187 conflicts: 1 shift/reduce State 191 conflicts: 1 shift/reduce State 196 conflicts: 39 shift/reduce, 3 reduce/reduce State 199 conflicts: 1 shift/reduce State 201 conflicts: 100 reduce/reduce State 203 conflicts: 1 shift/reduce State 208 conflicts: 2 shift/reduce State 214 conflicts: 39 shift/reduce, 3 reduce/reduce State 219 conflicts: 39 shift/reduce, 3 reduce/reduce State 226 conflicts: 1 shift/reduce State 228 conflicts: 1 shift/reduce State 229 conflicts: 1 shift/reduce State 233 conflicts: 1 shift/reduce State 238 conflicts: 2 reduce/reduce State 245 conflicts: 2 shift/reduce State 247 conflicts: 1 shift/reduce State 248 conflicts: 2 shift/reduce State 249 conflicts: 2 shift/reduce State 252 conflicts: 2 shift/reduce State 253 conflicts: 2 shift/reduce State 254 conflicts: 2 shift/reduce State 261 conflicts: 2 shift/reduce State 262 conflicts: 2 shift/reduce State 264 conflicts: 2 shift/reduce State 282 conflicts: 2 shift/reduce State 283 conflicts: 1 shift/reduce State 285 conflicts: 1 shift/reduce State 287 conflicts: 1 shift/reduce, 1 reduce/reduce State 290 conflicts: 1 shift/reduce State 295 conflicts: 1 shift/reduce State 298 conflicts: 1 reduce/reduce State 305 conflicts: 2 shift/reduce State 320 conflicts: 1 shift/reduce State 326 conflicts: 1 shift/reduce State 327 conflicts: 1 shift/reduce State 328 conflicts: 2 shift/reduce State 329 conflicts: 1 shift/reduce State 331 conflicts: 2 shift/reduce State 334 conflicts: 2 shift/reduce State 335 conflicts: 4 shift/reduce State 338 conflicts: 1 shift/reduce State 345 conflicts: 1 shift/reduce State 348 conflicts: 2 shift/reduce State 357 conflicts: 5 shift/reduce, 2 reduce/reduce State 364 conflicts: 3 shift/reduce, 1 reduce/reduce State 378 conflicts: 2 shift/reduce State 379 conflicts: 2 shift/reduce State 380 conflicts: 2 shift/reduce State 387 conflicts: 3 shift/reduce State 394 conflicts: 1 shift/reduce State 398 conflicts: 1 shift/reduce State 403 conflicts: 2 shift/reduce State 406 conflicts: 3 shift/reduce State 408 conflicts: 3 reduce/reduce State 409 conflicts: 1 shift/reduce State 414 conflicts: 24 shift/reduce, 3 reduce/reduce State 415 conflicts: 2 shift/reduce, 1 reduce/reduce State 416 conflicts: 1 shift/reduce State 420 conflicts: 5 shift/reduce, 1 reduce/reduce State 423 conflicts: 2 shift/reduce State 424 conflicts: 1 shift/reduce State 425 conflicts: 5 shift/reduce, 1 reduce/reduce State 432 conflicts: 1 shift/reduce State 433 conflicts: 2 shift/reduce State 438 conflicts: 2 shift/reduce State 440 conflicts: 32 shift/reduce State 446 conflicts: 1 shift/reduce State 480 conflicts: 1 shift/reduce State 495 conflicts: 1 shift/reduce State 500 conflicts: 1 shift/reduce State 502 conflicts: 6 shift/reduce State 507 conflicts: 100 reduce/reduce State 512 conflicts: 2 shift/reduce State 513 conflicts: 2 shift/reduce State 514 conflicts: 2 shift/reduce State 515 conflicts: 2 shift/reduce State 516 conflicts: 2 shift/reduce State 520 conflicts: 2 shift/reduce State 522 conflicts: 2 shift/reduce State 525 conflicts: 2 shift/reduce State 526 conflicts: 1 shift/reduce State 527 conflicts: 2 shift/reduce State 528 conflicts: 2 shift/reduce State 529 conflicts: 2 shift/reduce State 530 conflicts: 2 shift/reduce State 531 conflicts: 2 shift/reduce State 532 conflicts: 2 shift/reduce State 533 conflicts: 2 shift/reduce State 534 conflicts: 2 shift/reduce State 536 conflicts: 2 shift/reduce State 538 conflicts: 5 shift/reduce, 1 reduce/reduce State 543 conflicts: 2 shift/reduce State 544 conflicts: 2 shift/reduce State 556 conflicts: 2 shift/reduce State 557 conflicts: 2 shift/reduce State 558 conflicts: 2 shift/reduce State 559 conflicts: 2 shift/reduce State 560 conflicts: 2 shift/reduce State 561 conflicts: 2 shift/reduce State 563 conflicts: 2 shift/reduce State 564 conflicts: 2 shift/reduce State 565 conflicts: 2 shift/reduce State 566 conflicts: 2 shift/reduce State 567 conflicts: 2 shift/reduce State 572 conflicts: 2 shift/reduce State 573 conflicts: 2 shift/reduce State 574 conflicts: 2 shift/reduce State 575 conflicts: 2 shift/reduce State 576 conflicts: 2 shift/reduce State 577 conflicts: 2 shift/reduce State 578 conflicts: 2 shift/reduce State 580 conflicts: 2 shift/reduce State 596 conflicts: 39 shift/reduce, 3 reduce/reduce State 608 conflicts: 2 shift/reduce State 618 conflicts: 4 shift/reduce State 625 conflicts: 2 shift/reduce State 627 conflicts: 3 shift/reduce, 1 reduce/reduce State 628 conflicts: 3 shift/reduce State 629 conflicts: 1 shift/reduce State 632 conflicts: 1 shift/reduce State 638 conflicts: 2 reduce/reduce State 641 conflicts: 1 shift/reduce State 654 conflicts: 2 shift/reduce State 655 conflicts: 1 shift/reduce State 660 conflicts: 2 shift/reduce State 663 conflicts: 2 shift/reduce State 675 conflicts: 2 shift/reduce State 676 conflicts: 1 shift/reduce State 678 conflicts: 2 shift/reduce State 680 conflicts: 2 shift/reduce State 683 conflicts: 1 shift/reduce State 687 conflicts: 1 reduce/reduce State 689 conflicts: 1 shift/reduce State 691 conflicts: 2 shift/reduce, 1 reduce/reduce State 694 conflicts: 5 shift/reduce State 701 conflicts: 2 shift/reduce State 703 conflicts: 2 shift/reduce State 705 conflicts: 3 shift/reduce, 2 reduce/reduce State 706 conflicts: 1 shift/reduce State 741 conflicts: 2 shift/reduce State 744 conflicts: 2 shift/reduce State 750 conflicts: 1 shift/reduce State 751 conflicts: 1 shift/reduce State 757 conflicts: 2 shift/reduce State 758 conflicts: 100 reduce/reduce State 762 conflicts: 6 shift/reduce State 764 conflicts: 2 shift/reduce State 775 conflicts: 2 shift/reduce State 777 conflicts: 2 shift/reduce State 779 conflicts: 2 shift/reduce State 791 conflicts: 1 shift/reduce State 794 conflicts: 37 shift/reduce, 3 reduce/reduce State 804 conflicts: 1 reduce/reduce State 805 conflicts: 1 shift/reduce State 823 conflicts: 1 reduce/reduce State 829 conflicts: 39 shift/reduce, 3 reduce/reduce State 849 conflicts: 1 shift/reduce State 864 conflicts: 1 reduce/reduce State 866 conflicts: 2 shift/reduce, 2 reduce/reduce State 875 conflicts: 1 shift/reduce, 1 reduce/reduce State 882 conflicts: 2 shift/reduce State 887 conflicts: 2 shift/reduce State 907 conflicts: 1 shift/reduce State 908 conflicts: 2 shift/reduce State 910 conflicts: 2 shift/reduce State 917 conflicts: 4 shift/reduce State 920 conflicts: 5 shift/reduce State 926 conflicts: 1 shift/reduce State 936 conflicts: 1 shift/reduce State 944 conflicts: 1 shift/reduce State 945 conflicts: 2 shift/reduce State 946 conflicts: 2 shift/reduce State 951 conflicts: 2 shift/reduce State 963 conflicts: 2 shift/reduce State 965 conflicts: 2 shift/reduce State 966 conflicts: 1 shift/reduce State 967 conflicts: 3 shift/reduce State 968 conflicts: 2 shift/reduce State 970 conflicts: 2 shift/reduce State 973 conflicts: 36 shift/reduce, 3 reduce/reduce State 974 conflicts: 2 shift/reduce State 979 conflicts: 37 shift/reduce, 3 reduce/reduce State 982 conflicts: 2 shift/reduce State 990 conflicts: 39 shift/reduce, 3 reduce/reduce State 1010 conflicts: 1 reduce/reduce State 1020 conflicts: 1 shift/reduce State 1026 conflicts: 3 shift/reduce State 1029 conflicts: 1 shift/reduce State 1031 conflicts: 1 shift/reduce State 1032 conflicts: 1 shift/reduce State 1052 conflicts: 4 shift/reduce State 1053 conflicts: 2 shift/reduce State 1054 conflicts: 2 shift/reduce State 1058 conflicts: 2 shift/reduce State 1061 conflicts: 1 shift/reduce, 1 reduce/reduce State 1064 conflicts: 27 shift/reduce, 3 reduce/reduce State 1069 conflicts: 2 shift/reduce State 1070 conflicts: 2 shift/reduce State 1071 conflicts: 2 shift/reduce State 1072 conflicts: 2 shift/reduce State 1077 conflicts: 2 shift/reduce State 1081 conflicts: 2 shift/reduce State 1085 conflicts: 3 shift/reduce State 1087 conflicts: 2 shift/reduce State 1092 conflicts: 2 reduce/reduce State 1093 conflicts: 1 shift/reduce State 1094 conflicts: 2 shift/reduce State 1098 conflicts: 37 shift/reduce, 3 reduce/reduce State 1102 conflicts: 2 shift/reduce State 1104 conflicts: 2 shift/reduce State 1139 conflicts: 2 shift/reduce State 1141 conflicts: 1 shift/reduce State 1144 conflicts: 2 shift/reduce State 1148 conflicts: 1 shift/reduce, 2 reduce/reduce State 1157 conflicts: 39 shift/reduce, 3 reduce/reduce State 1170 conflicts: 1 shift/reduce State 1173 conflicts: 2 shift/reduce State 1178 conflicts: 37 shift/reduce, 3 reduce/reduce State 1183 conflicts: 37 shift/reduce, 3 reduce/reduce State 1185 conflicts: 19 shift/reduce, 3 reduce/reduce State 1187 conflicts: 37 shift/reduce, 39 reduce/reduce State 1197 conflicts: 62 shift/reduce, 41 reduce/reduce State 1219 conflicts: 1 shift/reduce State 1220 conflicts: 1 shift/reduce State 1238 conflicts: 2 shift/reduce State 1244 conflicts: 2 shift/reduce State 1246 conflicts: 19 shift/reduce, 39 reduce/reduce State 1251 conflicts: 37 shift/reduce, 3 reduce/reduce State 1252 conflicts: 62 shift/reduce, 41 reduce/reduce State 1255 conflicts: 19 shift/reduce, 3 reduce/reduce State 1264 conflicts: 1 shift/reduce State 1267 conflicts: 1 shift/reduce State 1270 conflicts: 1 shift/reduce State 1272 conflicts: 3 shift/reduce State 1273 conflicts: 37 shift/reduce, 3 reduce/reduce State 1274 conflicts: 2 shift/reduce State 1277 conflicts: 2 shift/reduce State 1280 conflicts: 19 shift/reduce, 3 reduce/reduce State 1281 conflicts: 1 shift/reduce State 1284 conflicts: 2 shift/reduce State 1288 conflicts: 1 shift/reduce State 1292 conflicts: 2 shift/reduce State 1293 conflicts: 3 shift/reduce State 1294 conflicts: 2 shift/reduce State 1296 conflicts: 37 shift/reduce, 3 reduce/reduce State 1297 conflicts: 37 shift/reduce, 3 reduce/reduce State 1298 conflicts: 4 shift/reduce State 1303 conflicts: 1 reduce/reduce State 1304 conflicts: 1 reduce/reduce State 1309 conflicts: 37 shift/reduce, 3 reduce/reduce State 1316 conflicts: 37 shift/reduce, 3 reduce/reduce State 1318 conflicts: 37 shift/reduce, 3 reduce/reduce State 1319 conflicts: 1 shift/reduce State 1323 conflicts: 37 shift/reduce, 3 reduce/reduce

Grammar

0 $acceptresult $end 1 COMMA-opt → %empty 2 | "," 3 CONSTEXPR-opt → %empty 4 | "constexpr" 5 ELLIPSIS-opt → %empty 6 | "..." 7 EXPORT-opt → %empty 8 | "export" 9 EXTERN-opt → %empty 10 | "extern" 11 IDENTIFIER-opt → %empty 12 | IDENTIFIER 13 INLINE-opt → %empty 14 | "inline" 15 NOEXCEPT-opt → %empty 16 | "noexcept" 17 NOT-opt → %empty 18 | "!" 19 SCOPE-opt → %empty 20 | "::" 21 TEMPLATE-opt → %empty 22 | "template" 23 THIS-opt → %empty 24 | "this" 25 TYPENAME-opt → %empty 26 | "typename" 27 VIRTUAL-opt → %empty 28 | "virtual" 29 abstract-declaratorptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt → %empty 33 | abstract-declarator 34 abstract-pack-declaratornoptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 36 access-specifier"private" 37 | "protected" 38 | "public" 39 access-specifier-opt → %empty 40 | access-specifier 41 additive-expressionmultiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expressionequality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expressionconditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt → %empty 55 | assignment-expression 56 assignment-operator"=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause"(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt → %empty 70 | attribute-argument-clause 71 attribute-declarationattribute-specifier-seq ";" 72 attribute-listattribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespaceIDENTIFIER 77 attribute-opt → %empty 78 | attribute 79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → %empty 84 | attribute-specifier-seq 85 attribute-tokenIDENTIFIER 86 | attribute-scoped-token 87 attribute-using-prefix"using" attribute-namespace ":" 88 attribute-using-prefix-opt → %empty 89 | attribute-using-prefix 90 await-expression"co_await" cast-expression 91 balanced-token"(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seqbalanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt → %empty 98 | balanced-token-seq 99 base-clause":" base-specifier-list 100 base-clause-opt → %empty 101 | base-clause 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-listbase-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt 107 block-declarationsimple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 116 brace-or-equal-initializer"=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt → %empty 119 | brace-or-equal-initializer 120 braced-init-list"{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 123 capturesimple-capture 124 | init-capture 125 capture-default"&" 126 | "=" 127 capture-listcapture 128 | capture-list "," capture 129 cast-expressionunary-expression 130 | "(" type-id ")" cast-expression 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 133 class-head-namenested-name-specifier-opt class-name 134 class-key"class" 135 | "struct" 136 | "union" 137 class-nameIDENTIFIER 138 | simple-template-id 139 class-or-decltypenested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 142 class-specifierclass-head "{" member-specification-opt "}" 143 class-virt-specifier"final" 144 class-virt-specifier-opt → %empty 145 | class-virt-specifier 146 compare-expressionshift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 149 compound-statement"{" statement-seq-opt "}" 150 concept-definition"concept" concept-name "=" constraint-expression ";" 151 concept-nameIDENTIFIER 152 conditionexpression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt → %empty 155 | condition 156 conditional-expressionlogical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expressionconditional-expression 159 constant-expression-opt → %empty 160 | constant-expression 161 constraint-expressionlogical-or-expression 162 constraint-logical-and-expressionprimary-expression 163 | constraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expressionconstraint-logical-and-expression 165 | constraint-logical-or-expression "||" constraint-logical-and-expression 166 conversion-declaratorptr-operator conversion-declarator-opt 167 conversion-declarator-opt → %empty 168 | conversion-declarator 169 conversion-function-id"operator" conversion-type-id 170 conversion-type-idtype-specifier-seq conversion-declarator-opt 171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 172 ctor-initializer":" mem-initializer-list 173 ctor-initializer-opt → %empty 174 | ctor-initializer 175 cv-qualifier"const" 176 | "volatile" 177 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → %empty 179 | cv-qualifier-seq 180 decl-specifierstorage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → %empty 192 | decl-specifier-seq 193 declarationblock-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seqdeclaration 207 | declaration-seq declaration 208 declaration-seq-opt → %empty 209 | declaration-seq 210 declaration-statementblock-declaration 211 declaratorptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-idELLIPSIS-opt id-expression 214 decltype-specifier"decltype" "(" expression ")" 215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifiertype-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 222 delete-expressionSCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 224 designated-initializer-clausedesignator brace-or-equal-initializer 225 designated-initializer-listdesignated-initializer-clause 226 | designated-initializer-list "," designated-initializer-clause 227 designator"." IDENTIFIER 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration";" 234 enclosing-namespace-specifierIDENTIFIER 235 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 236 enum-base":" type-specifier-seq 237 enum-base-opt → %empty 238 | enum-base 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-namenested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt → %empty 242 | enum-head-name 243 enum-key"enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-nameIDENTIFIER 247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 249 enumeratorIDENTIFIER attribute-specifier-seq-opt 250 enumerator-definitionenumerator 251 | enumerator "=" constant-expression 252 enumerator-listenumerator-definition 253 | enumerator-list "," enumerator-definition 254 enumerator-list-opt → %empty 255 | enumerator-list 256 equality-expressionrelational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | "..." 262 exclusive-or-expressionand-expression 263 | exclusive-or-expression "^" and-expression 264 explicit-instantiationEXTERN-opt "template" declaration 265 explicit-specialization"template" "<" ">" declaration 266 explicit-specifier"explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt → %empty 269 | explicit-specifier 270 export-declaration"export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 273 expr-or-braced-init-listexpression 274 | braced-init-list 275 expr-or-braced-init-list-opt → %empty 276 | expr-or-braced-init-list 277 expressionassignment-expression 278 | expression "," assignment-expression 279 expression-listinitializer-list 280 expression-list-opt → %empty 281 | expression-list 282 expression-opt → %empty 283 | expression 284 expression-statementexpression-opt ";" 285 fold-expression"(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator"+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 322 for-range-initializerexpr-or-braced-init-list 323 function-bodyctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier"virtual" 330 | explicit-specifier 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 332 global-module-fragment"module" ";" declaration-seq-opt 333 global-module-fragment-opt → %empty 334 | global-module-fragment 335 handler"catch" "(" exception-declaration ")" compound-statement 336 handler-seqhandler handler-seq-opt 337 handler-seq-opt → %empty 338 | handler-seq 339 header-nameHEADER_NAME 340 id-expressionunqualified-id 341 | qualified-id 342 identifier-listIDENTIFIER 343 | identifier-list "," IDENTIFIER 344 inclusive-or-expressionexclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 346 init-captureELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 348 init-declaratordeclarator initializer-opt 349 | declarator requires-clause 350 init-declarator-listinit-declarator 351 | init-declarator-list "," init-declarator 352 init-declarator-list-opt → %empty 353 | init-declarator-list 354 init-statementexpression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt → %empty 358 | init-statement 359 initializerbrace-or-equal-initializer 360 | "(" expression-list ")" 361 initializer-clauseassignment-expression 362 | braced-init-list 363 initializer-listinitializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 365 initializer-opt → %empty 366 | initializer 367 iteration-statement"while" "(" condition ")" statement 368 | "do" statement "while" "(" expression ")" ";" 369 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 371 jump-statement"break" ";" 372 | "continue" ";" 373 | "return" expr-or-braced-init-list-opt ";" 374 | coroutine-return-statement 375 | "goto" IDENTIFIER ";" 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 379 lambda-capturecapture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt → %empty 383 | lambda-capture 384 lambda-declaratorlambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 386 lambda-expressionlambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer"[" lambda-capture-opt "]" 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 392 literal-operator-id"operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expressioninclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expressionlogical-and-expression 397 | logical-or-expression "||" logical-and-expression 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-idclass-or-decltype 401 | IDENTIFIER 402 mem-initializer-listmem-initializer ELLIPSIS-opt 403 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 419 member-declarator-listmember-declarator 420 | member-declarator-list "," member-declarator 421 member-declarator-list-opt → %empty 422 | member-declarator-list 423 member-specificationmember-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt → %empty 426 | member-specification 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 431 module-namemodule-name-qualifier-opt IDENTIFIER 432 module-name-qualifierIDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt → %empty 435 | module-name-qualifier 436 module-partition":" module-name-qualifier-opt IDENTIFIER 437 module-partition-opt → %empty 438 | module-partition 439 multiplicative-expressionpm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-aliasIDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-bodydeclaration-seq-opt 447 namespace-definitionnamed-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-nameIDENTIFIER 451 | namespace-alias 452 nested-name-specifier"::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt → %empty 459 | nested-name-specifier 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 461 nested-requirement"requires" constraint-expression ";" 462 new-declaratorptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt → %empty 465 | new-declarator 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer"(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt → %empty 471 | new-initializer 472 new-placement"(" expression-list ")" 473 new-placement-opt → %empty 474 | new-placement 475 new-type-idtype-specifier-seq new-declarator-opt 476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 477 noexcept-expression"noexcept" "(" expression ")" 478 noexcept-specifier"noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt → %empty 481 | noexcept-specifier 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt → %empty 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 497 operator-function-id"operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 499 overloadable-operator"new" 500 | "delete" 501 | "new" "[" "]" 502 | "delete" "[" "]" 503 | "co_await" 504 | "(" ")" 505 | "[" "]" 506 | "->" 507 | "->*" 508 | "~" 509 | "!" 510 | "+" 511 | "-" 512 | "*" 513 | "/" 514 | "%" 515 | "^" 516 | "&" 517 | "|" 518 | "=" 519 | "+=" 520 | "-=" 521 | "*=" 522 | "/=" 523 | "%=" 524 | "^=" 525 | "&=" 526 | "|=" 527 | "==" 528 | "!=" 529 | "<" 530 | ">" 531 | "<=" 532 | ">=" 533 | "<=>" 534 | "&&" 535 | "||" 536 | "<<" 537 | ">>" 538 | "<<=" 539 | ">>=" 540 | "++" 541 | "--" 542 | "," 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-listparameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt → %empty 552 | parameter-declaration-list 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 554 placeholder-type-specifiertype-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expressioncast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expressionprimary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression"literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 585 private-module-fragment-opt → %empty 586 | private-module-fragment 587 ptr-abstract-declaratornoptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt → %empty 590 | ptr-abstract-declarator 591 ptr-declaratornoptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 597 pure-specifier"=" '0' 598 pure-specifier-opt → %empty 599 | pure-specifier 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 601 qualified-namespace-specifiernested-name-specifier-opt namespace-name 602 ref-qualifier"&" 603 | "&&" 604 ref-qualifier-opt → %empty 605 | ref-qualifier 606 relational-expressioncompare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirementsimple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 616 requirement-parameter-list"(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt → %empty 618 | requirement-parameter-list 619 requirement-seqrequirement 620 | requirement-seq requirement 621 requires-clause"requires" constraint-logical-or-expression 622 requires-clause-opt → %empty 623 | requires-clause 624 requires-expression"requires" requirement-parameter-list-opt requirement-body 625 return-type-requirement"->" type-constraint 626 return-type-requirement-opt → %empty 627 | return-type-requirement 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement 632 | "switch" "(" init-statement-opt condition ")" statement 633 shift-expressionadditive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 636 simple-captureIDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" 640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 643 simple-requirementexpression ";" 644 simple-template-idtemplate-name "<" template-argument-list-opt ">" 645 simple-type-specifiernested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statementlabeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 672 statement-seqstatement 673 | statement-seq statement 674 statement-seq-opt → %empty 675 | statement-seq 676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier"static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literalSTRING_LITERAL 683 template-argumentconstant-expression 684 | type-id 685 | id-expression 686 template-argument-listtemplate-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt → %empty 689 | template-argument-list 690 template-declarationtemplate-head declaration 691 | template-head concept-definition 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt 693 template-idsimple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-nameIDENTIFIER 697 template-parametertype-parameter 698 | parameter-declaration 699 template-parameter-listtemplate-parameter 700 | template-parameter-list "," template-parameter 701 throw-expression"throw" assignment-expression-opt 702 trailing-return-type"->" type-id 703 trailing-return-type-opt → %empty 704 | trailing-return-type 705 translation-unitdeclaration-seq-opt 706 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 707 try-block"try" compound-statement handler-seq 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt → %empty 711 | type-constraint 712 type-idtype-specifier-seq abstract-declarator-opt 713 type-nameclass-name 714 | enum-name 715 | typedef-name 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key"class" 723 | "typename" 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 725 type-specifiersimple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seqtype-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-nameIDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 735 ud-suffixIDENTIFIER 736 unary-expressionpostfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator"*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 755 unqualified-idIDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 762 user-defined-string-literalstring-literal ud-suffix 763 using-declaration"using" using-declarator-list ";" 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id 765 using-declarator-listusing-declarator ELLIPSIS-opt 766 | using-declarator-list "," using-declarator ELLIPSIS-opt 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration"using" elaborated-enum-specifier ";" 769 virt-specifier"override" 770 | "final" 771 virt-specifier-seqvirt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt → %empty 774 | virt-specifier-seq 775 yield-expression"co_yield" assignment-expression 776 | "co_yield" braced-init-list 777 resulttranslation-unit

Terminals, with rules where they appear

Nonterminals, with rules where they appear

Automaton

State 0

0 $accept result $end 9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 332 global-module-fragment "module" ";" declaration-seq-opt 333 global-module-fragment-opt %empty ["export", "module"] 334 | global-module-fragment 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 705 translation-unit declaration-seq-opt 706 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" 777 result translation-unit "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "module" shift, and go to state 24 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 333 (global-module-fragment-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" [reduce using rule 333 (global-module-fragment-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 62 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 global-module-fragment go to state 80 global-module-fragment-opt go to state 81 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 translation-unit go to state 103 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113 result go to state 114

State 1

185 decl-specifier"constexpr" $default reduce using rule 185 (decl-specifier)

State 2

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 270 | "export" declaration 271 | "export" "{" declaration-seq-opt "}" 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 115 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 116 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 117 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 3

10 EXTERN-opt"extern" ["template"] 390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 680 storage-class-specifier"extern" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 "template" reduce using rule 10 (EXTERN-opt) $default reduce using rule 680 (storage-class-specifier) string-literal go to state 119

State 4

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 137 (class-name)

State 5

14 INLINE-opt"inline" ["namespace"] 188 decl-specifier"inline" ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "namespace" reduce using rule 14 (INLINE-opt) $default reduce using rule 188 (decl-specifier)

State 6

452 nested-name-specifier"::" $default reduce using rule 452 (nested-name-specifier)

State 7

265 explicit-specialization"template" "<" ">" declaration 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 120

State 8

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 122 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 9

329 function-specifier"virtual" $default reduce using rule 329 (function-specifier)

State 10

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 763 using-declaration"using" using-declarator-list ";" 764 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 765 using-declarator-list using-declarator ELLIPSIS-opt 766 | using-declarator-list "," using-declarator ELLIPSIS-opt 768 using-enum-declaration"using" elaborated-enum-specifier ";" IDENTIFIER shift, and go to state 123 "typename" shift, and go to state 124 "enum" shift, and go to state 125 IDENTIFIER [reduce using rule 25 (TYPENAME-opt)] $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 126 elaborated-enum-specifier go to state 127 using-declarator go to state 128 using-declarator-list go to state 129

State 11

233 empty-declaration";" $default reduce using rule 233 (empty-declaration)

State 12

134 class-key"class" $default reduce using rule 134 (class-key)

State 13

135 class-key"struct" $default reduce using rule 135 (class-key)

State 14

136 class-key"union" $default reduce using rule 136 (class-key)

State 15

175 cv-qualifier"const" $default reduce using rule 175 (cv-qualifier)

State 16

176 cv-qualifier"volatile" $default reduce using rule 176 (cv-qualifier)

State 17

183 decl-specifier"friend" $default reduce using rule 183 (decl-specifier)

State 18

184 decl-specifier"typedef" $default reduce using rule 184 (decl-specifier)

State 19

186 decl-specifier"consteval" $default reduce using rule 186 (decl-specifier)

State 20

187 decl-specifier"constinit" $default reduce using rule 187 (decl-specifier)

State 21

214 decltype-specifier"decltype" "(" expression ")" "(" shift, and go to state 130

State 22

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 243 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "class" shift, and go to state 131 "struct" shift, and go to state 132 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 243 (enum-key)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 243 (enum-key)] "decltype" [reduce using rule 243 (enum-key)] $default reduce using rule 243 (enum-key) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 134 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 23

266 explicit-specifier"explicit" "(" constant-expression ")" 267 | "explicit" [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 135 "(" [reduce using rule 267 (explicit-specifier)] $default reduce using rule 267 (explicit-specifier)

State 24

332 global-module-fragment"module" ";" declaration-seq-opt ";" shift, and go to state 136

State 25

339 header-name HEADER_NAME 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 431 module-name module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier 436 module-partition ":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 137 ":" shift, and go to state 138 HEADER_NAME shift, and go to state 139 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] header-name go to state 140 module-name go to state 141 module-name-qualifier go to state 142 module-name-qualifier-opt go to state 143 module-partition go to state 144

State 26

234 enclosing-namespace-specifier IDENTIFIER 235 | enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 145 enclosing-namespace-specifier go to state 146

State 27

650 simple-type-specifier"char" $default reduce using rule 650 (simple-type-specifier)

State 28

651 simple-type-specifier"char8_t" $default reduce using rule 651 (simple-type-specifier)

State 29

652 simple-type-specifier"char16_t" $default reduce using rule 652 (simple-type-specifier)

State 30

653 simple-type-specifier"char32_t" $default reduce using rule 653 (simple-type-specifier)

State 31

654 simple-type-specifier"wchar_t" $default reduce using rule 654 (simple-type-specifier)

State 32

655 simple-type-specifier"bool" $default reduce using rule 655 (simple-type-specifier)

State 33

656 simple-type-specifier"short" $default reduce using rule 656 (simple-type-specifier)

State 34

657 simple-type-specifier"int" $default reduce using rule 657 (simple-type-specifier)

State 35

658 simple-type-specifier"long" $default reduce using rule 658 (simple-type-specifier)

State 36

659 simple-type-specifier"signed" $default reduce using rule 659 (simple-type-specifier)

State 37

660 simple-type-specifier"unsigned" $default reduce using rule 660 (simple-type-specifier)

State 38

661 simple-type-specifier"float" $default reduce using rule 661 (simple-type-specifier)

State 39

662 simple-type-specifier"double" $default reduce using rule 662 (simple-type-specifier)

State 40

663 simple-type-specifier"void" $default reduce using rule 663 (simple-type-specifier)

State 41

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" "(" shift, and go to state 147

State 42

678 storage-class-specifier"static" $default reduce using rule 678 (storage-class-specifier)

State 43

679 storage-class-specifier"thread_local" $default reduce using rule 679 (storage-class-specifier)

State 44

681 storage-class-specifier"mutable" $default reduce using rule 681 (storage-class-specifier)

State 45

264 explicit-instantiationEXTERN-opt "template" declaration "template" shift, and go to state 148

State 46

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "namespace" shift, and go to state 149

State 47

114 block-declarationalias-declaration $default reduce using rule 114 (block-declaration)

State 48

108 block-declarationasm-declaration $default reduce using rule 108 (block-declaration)

State 49

204 declarationattribute-declaration $default reduce using rule 204 (declaration)

State 50

71 attribute-declarationattribute-specifier-seq ";" 84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 ";" shift, and go to state 152 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 153 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 51

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 192 | decl-specifier-seq 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "constexpr" shift, and go to state 1 "..." shift, and go to state 156 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 157 "alignas" shift, and go to state 158 "(" shift, and go to state 159 "&" shift, and go to state 160 "asm" shift, and go to state 161 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "&&" shift, and go to state 163 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 164 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "..." [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 191 (decl-specifier-seq-opt)] "(" [reduce using rule 191 (decl-specifier-seq-opt)] "&" [reduce using rule 191 (decl-specifier-seq-opt)] "&&" [reduce using rule 191 (decl-specifier-seq-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "operator" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "*" [reduce using rule 191 (decl-specifier-seq-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) "~" [reduce using rule 191 (decl-specifier-seq-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 168 decl-specifier-seq-opt go to state 169 declarator go to state 170 declarator-id go to state 171 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 172 nested-name-specifier-opt go to state 90 noptr-declarator go to state 173 placeholder-type-specifier go to state 94 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 52

193 declarationblock-declaration $default reduce using rule 193 (declaration)

State 53

142 class-specifierclass-head "{" member-specification-opt "}" "{" shift, and go to state 176

State 54

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", ":", "{", "decltype"] 84 | attribute-specifier-seq 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 178 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 179 simple-template-id go to state 180 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 55

713 type-nameclass-name $default reduce using rule 713 (type-name)

State 56

218 defining-type-specifierclass-specifier $default reduce using rule 218 (defining-type-specifier)

State 57

728 type-specifiercv-qualifier $default reduce using rule 728 (type-specifier)

State 58

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] 84 | attribute-specifier-seq 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 189 | decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 181 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 182 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 59

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 350 init-declarator-list init-declarator 351 | init-declarator-list "," init-declarator 352 init-declarator-list-opt %empty [";"] 353 | init-declarator-list 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 352 (init-declarator-list-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 184 init-declarator-list go to state 185 init-declarator-list-opt go to state 186 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 60

206 declaration-seqdeclaration $default reduce using rule 206 (declaration-seq)

State 61

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 207 declaration-seqdeclaration-seq declaration 209 declaration-seq-optdeclaration-seq [$end, "export", "}", "module"] 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 209 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 209 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 209 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 209 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 188 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 62

705 translation-unitdeclaration-seq-opt $default reduce using rule 705 (translation-unit)

State 63

455 nested-name-specifierdecltype-specifier "::" 647 simple-type-specifierdecltype-specifier [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 189 "::" [reduce using rule 647 (simple-type-specifier)] $default reduce using rule 647 (simple-type-specifier)

State 64

197 declarationdeduction-guide $default reduce using rule 197 (declaration)

State 65

181 decl-specifierdefining-type-specifier $default reduce using rule 181 (decl-specifier)

State 66

232 elaborated-type-specifierelaborated-enum-specifier $default reduce using rule 232 (elaborated-type-specifier)

State 67

726 type-specifierelaborated-type-specifier $default reduce using rule 726 (type-specifier)

State 68

203 declarationempty-declaration $default reduce using rule 203 (declaration)

State 69

247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" "{" shift, and go to state 190

State 70

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 191

State 71

714 type-nameenum-name $default reduce using rule 714 (type-name)

State 72

219 defining-type-specifierenum-specifier $default reduce using rule 219 (defining-type-specifier)

State 73

198 declarationexplicit-instantiation $default reduce using rule 198 (declaration)

State 74

199 declarationexplicit-specialization $default reduce using rule 199 (declaration)

State 75

269 explicit-specifier-optexplicit-specifier [IDENTIFIER] 330 function-specifierexplicit-specifier ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] IDENTIFIER reduce using rule 269 (explicit-specifier-opt) IDENTIFIER [reduce using rule 330 (function-specifier)] $default reduce using rule 330 (function-specifier)

State 76

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 template-name go to state 193

State 77

200 declarationexport-declaration $default reduce using rule 200 (declaration)

State 78

195 declarationfunction-definition $default reduce using rule 195 (declaration)

State 79

182 decl-specifierfunction-specifier $default reduce using rule 182 (decl-specifier)

State 80

334 global-module-fragment-optglobal-module-fragment $default reduce using rule 334 (global-module-fragment-opt)

State 81

7 EXPORT-opt %empty ["module"] 8 | "export" 427 module-declaration EXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "export" shift, and go to state 194 $default reduce using rule 7 (EXPORT-opt) EXPORT-opt go to state 195 module-declaration go to state 196

State 82

201 declarationlinkage-specification $default reduce using rule 201 (declaration)

State 83

205 declarationmodule-import-declaration $default reduce using rule 205 (declaration)

State 84

447 namespace-definitionnamed-namespace-definition $default reduce using rule 447 (namespace-definition)

State 85

451 namespace-namenamespace-alias $default reduce using rule 451 (namespace-name)

State 86

109 block-declarationnamespace-alias-definition $default reduce using rule 109 (block-declaration)

State 87

202 declarationnamespace-definition $default reduce using rule 202 (declaration)

State 88

454 nested-name-specifiernamespace-name "::" "::" shift, and go to state 197

State 89

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 90

137 class-name IDENTIFIER 138 | simple-template-id 151 concept-name IDENTIFIER 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifiernested-name-specifier-opt type-name 649 | nested-name-specifier-opt template-name 696 template-name IDENTIFIER 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 201 class-name go to state 55 concept-name go to state 202 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 203 type-name go to state 204 typedef-name go to state 108

State 91

449 namespace-definitionnested-namespace-definition $default reduce using rule 449 (namespace-definition)

State 92

194 declarationnodeclspec-function-declaration $default reduce using rule 194 (declaration)

State 93

115 block-declarationopaque-enum-declaration $default reduce using rule 115 (block-declaration)

State 94

648 simple-type-specifierplaceholder-type-specifier $default reduce using rule 648 (simple-type-specifier)

State 95

107 block-declarationsimple-declaration $default reduce using rule 107 (block-declaration)

State 96

138 class-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 138 (class-name) "," [reduce using rule 732 (typedef-name)] "constexpr" reduce using rule 138 (class-name) "constexpr" [reduce using rule 732 (typedef-name)] "..." reduce using rule 138 (class-name) "..." [reduce using rule 732 (typedef-name)] "export" reduce using rule 138 (class-name) "export" [reduce using rule 732 (typedef-name)] "extern" reduce using rule 138 (class-name) "extern" [reduce using rule 732 (typedef-name)] IDENTIFIER reduce using rule 138 (class-name) IDENTIFIER [reduce using rule 732 (typedef-name)] "inline" reduce using rule 138 (class-name) "inline" [reduce using rule 732 (typedef-name)] "noexcept" reduce using rule 138 (class-name) "noexcept" [reduce using rule 732 (typedef-name)] "::" reduce using rule 138 (class-name) "::" [reduce using rule 732 (typedef-name)] "template" reduce using rule 138 (class-name) "template" [reduce using rule 732 (typedef-name)] "typename" reduce using rule 138 (class-name) "typename" [reduce using rule 732 (typedef-name)] "virtual" reduce using rule 138 (class-name) "virtual" [reduce using rule 732 (typedef-name)] "+" reduce using rule 138 (class-name) "+" [reduce using rule 732 (typedef-name)] "-" reduce using rule 138 (class-name) "-" [reduce using rule 732 (typedef-name)] "using" reduce using rule 138 (class-name) "using" [reduce using rule 732 (typedef-name)] "=" reduce using rule 138 (class-name) "=" [reduce using rule 732 (typedef-name)] ";" reduce using rule 138 (class-name) ";" [reduce using rule 732 (typedef-name)] "alignas" reduce using rule 138 (class-name) "alignas" [reduce using rule 732 (typedef-name)] "(" reduce using rule 138 (class-name) "(" [reduce using rule 732 (typedef-name)] ")" reduce using rule 138 (class-name) ")" [reduce using rule 732 (typedef-name)] "&" reduce using rule 138 (class-name) "&" [reduce using rule 732 (typedef-name)] "asm" reduce using rule 138 (class-name) "asm" [reduce using rule 732 (typedef-name)] "*=" reduce using rule 138 (class-name) "*=" [reduce using rule 732 (typedef-name)] "/=" reduce using rule 138 (class-name) "/=" [reduce using rule 732 (typedef-name)] "%=" reduce using rule 138 (class-name) "%=" [reduce using rule 732 (typedef-name)] "+=" reduce using rule 138 (class-name) "+=" [reduce using rule 732 (typedef-name)] "-=" reduce using rule 138 (class-name) "-=" [reduce using rule 732 (typedef-name)] ">>=" reduce using rule 138 (class-name) ">>=" [reduce using rule 732 (typedef-name)] "<<=" reduce using rule 138 (class-name) "<<=" [reduce using rule 732 (typedef-name)] "&=" reduce using rule 138 (class-name) "&=" [reduce using rule 732 (typedef-name)] "^=" reduce using rule 138 (class-name) "^=" [reduce using rule 732 (typedef-name)] "|=" reduce using rule 138 (class-name) "|=" [reduce using rule 732 (typedef-name)] "[" reduce using rule 138 (class-name) "[" [reduce using rule 732 (typedef-name)] "]" reduce using rule 138 (class-name) "]" [reduce using rule 732 (typedef-name)] ":" reduce using rule 138 (class-name) ":" [reduce using rule 732 (typedef-name)] "{" reduce using rule 138 (class-name) "{" [reduce using rule 732 (typedef-name)] "}" reduce using rule 138 (class-name) "}" [reduce using rule 732 (typedef-name)] "class" reduce using rule 138 (class-name) "class" [reduce using rule 732 (typedef-name)] "struct" reduce using rule 138 (class-name) "struct" [reduce using rule 732 (typedef-name)] "union" reduce using rule 138 (class-name) "union" [reduce using rule 732 (typedef-name)] "final" reduce using rule 138 (class-name) "final" [reduce using rule 732 (typedef-name)] "<=>" reduce using rule 138 (class-name) "<=>" [reduce using rule 732 (typedef-name)] "concept" reduce using rule 138 (class-name) "concept" [reduce using rule 732 (typedef-name)] "?" reduce using rule 138 (class-name) "?" [reduce using rule 732 (typedef-name)] "&&" reduce using rule 138 (class-name) "&&" [reduce using rule 732 (typedef-name)] "||" reduce using rule 138 (class-name) "||" [reduce using rule 732 (typedef-name)] "operator" reduce using rule 138 (class-name) "operator" [reduce using rule 732 (typedef-name)] "const" reduce using rule 138 (class-name) "const" [reduce using rule 732 (typedef-name)] "volatile" reduce using rule 138 (class-name) "volatile" [reduce using rule 732 (typedef-name)] "friend" reduce using rule 138 (class-name) "friend" [reduce using rule 732 (typedef-name)] "typedef" reduce using rule 138 (class-name) "typedef" [reduce using rule 732 (typedef-name)] "consteval" reduce using rule 138 (class-name) "consteval" [reduce using rule 732 (typedef-name)] "constinit" reduce using rule 138 (class-name) "constinit" [reduce using rule 732 (typedef-name)] "decltype" reduce using rule 138 (class-name) "decltype" [reduce using rule 732 (typedef-name)] "->" reduce using rule 138 (class-name) "->" [reduce using rule 732 (typedef-name)] "." reduce using rule 138 (class-name) "." [reduce using rule 732 (typedef-name)] "enum" reduce using rule 138 (class-name) "enum" [reduce using rule 732 (typedef-name)] "==" reduce using rule 138 (class-name) "==" [reduce using rule 732 (typedef-name)] "!=" reduce using rule 138 (class-name) "!=" [reduce using rule 732 (typedef-name)] "^" reduce using rule 138 (class-name) "^" [reduce using rule 732 (typedef-name)] "<" reduce using rule 138 (class-name) "<" [reduce using rule 732 (typedef-name)] ">" reduce using rule 138 (class-name) ">" [reduce using rule 732 (typedef-name)] "explicit" reduce using rule 138 (class-name) "explicit" [reduce using rule 732 (typedef-name)] "*" reduce using rule 138 (class-name) "*" [reduce using rule 732 (typedef-name)] "/" reduce using rule 138 (class-name) "/" [reduce using rule 732 (typedef-name)] "%" reduce using rule 138 (class-name) "%" [reduce using rule 732 (typedef-name)] "|" reduce using rule 138 (class-name) "|" [reduce using rule 732 (typedef-name)] "<<" reduce using rule 138 (class-name) "<<" [reduce using rule 732 (typedef-name)] ">>" reduce using rule 138 (class-name) ">>" [reduce using rule 732 (typedef-name)] "<=" reduce using rule 138 (class-name) "<=" [reduce using rule 732 (typedef-name)] ">=" reduce using rule 138 (class-name) ">=" [reduce using rule 732 (typedef-name)] ".*" reduce using rule 138 (class-name) ".*" [reduce using rule 732 (typedef-name)] "->*" reduce using rule 138 (class-name) "->*" [reduce using rule 732 (typedef-name)] "try" reduce using rule 138 (class-name) "try" [reduce using rule 732 (typedef-name)] "import" reduce using rule 138 (class-name) "import" [reduce using rule 732 (typedef-name)] "namespace" reduce using rule 138 (class-name) "namespace" [reduce using rule 732 (typedef-name)] "requires" reduce using rule 138 (class-name) "requires" [reduce using rule 732 (typedef-name)] "~" reduce using rule 138 (class-name) "~" [reduce using rule 732 (typedef-name)] "++" reduce using rule 138 (class-name) "++" [reduce using rule 732 (typedef-name)] "--" reduce using rule 138 (class-name) "--" [reduce using rule 732 (typedef-name)] "auto" reduce using rule 138 (class-name) "auto" [reduce using rule 732 (typedef-name)] "char" reduce using rule 138 (class-name) "char" [reduce using rule 732 (typedef-name)] "char8_t" reduce using rule 138 (class-name) "char8_t" [reduce using rule 732 (typedef-name)] "char16_t" reduce using rule 138 (class-name) "char16_t" [reduce using rule 732 (typedef-name)] "char32_t" reduce using rule 138 (class-name) "char32_t" [reduce using rule 732 (typedef-name)] "wchar_t" reduce using rule 138 (class-name) "wchar_t" [reduce using rule 732 (typedef-name)] "bool" reduce using rule 138 (class-name) "bool" [reduce using rule 732 (typedef-name)] "short" reduce using rule 138 (class-name) "short" [reduce using rule 732 (typedef-name)] "int" reduce using rule 138 (class-name) "int" [reduce using rule 732 (typedef-name)] "long" reduce using rule 138 (class-name) "long" [reduce using rule 732 (typedef-name)] "signed" reduce using rule 138 (class-name) "signed" [reduce using rule 732 (typedef-name)] "unsigned" reduce using rule 138 (class-name) "unsigned" [reduce using rule 732 (typedef-name)] "float" reduce using rule 138 (class-name) "float" [reduce using rule 732 (typedef-name)] "double" reduce using rule 138 (class-name) "double" [reduce using rule 732 (typedef-name)] "void" reduce using rule 138 (class-name) "void" [reduce using rule 732 (typedef-name)] "static_assert" reduce using rule 138 (class-name) "static_assert" [reduce using rule 732 (typedef-name)] "static" reduce using rule 138 (class-name) "static" [reduce using rule 732 (typedef-name)] "thread_local" reduce using rule 138 (class-name) "thread_local" [reduce using rule 732 (typedef-name)] "mutable" reduce using rule 138 (class-name) "mutable" [reduce using rule 732 (typedef-name)] "override" reduce using rule 138 (class-name) "override" [reduce using rule 732 (typedef-name)] $default reduce using rule 138 (class-name)

State 97

725 type-specifiersimple-type-specifier $default reduce using rule 725 (type-specifier)

State 98

113 block-declarationstatic_assert-declaration $default reduce using rule 113 (block-declaration)

State 99

180 decl-specifierstorage-class-specifier $default reduce using rule 180 (decl-specifier)

State 100

196 declarationtemplate-declaration $default reduce using rule 196 (declaration)

State 101

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 150 concept-definition "concept" concept-name "=" constraint-expression ";" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 690 | template-head declaration 691 | template-head concept-definition 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "concept" shift, and go to state 205 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 concept-definition go to state 206 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 207 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 102

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" "<" shift, and go to state 208

State 103

777 resulttranslation-unit $default reduce using rule 777 (result)

State 104

711 type-constraint-opttype-constraint $default reduce using rule 711 (type-constraint-opt)

State 105

554 placeholder-type-specifiertype-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" "decltype" shift, and go to state 209 "auto" shift, and go to state 210

State 106

453 nested-name-specifiertype-name "::" "::" shift, and go to state 211

State 107

217 defining-type-specifiertype-specifier $default reduce using rule 217 (defining-type-specifier)

State 108

715 type-nametypedef-name $default reduce using rule 715 (type-name)

State 109

727 type-specifiertypename-specifier $default reduce using rule 727 (type-specifier)

State 110

448 namespace-definitionunnamed-namespace-definition $default reduce using rule 448 (namespace-definition)

State 111

110 block-declarationusing-declaration $default reduce using rule 110 (block-declaration)

State 112

112 block-declarationusing-directive $default reduce using rule 112 (block-declaration)

State 113

111 block-declarationusing-enum-declaration $default reduce using rule 111 (block-declaration)

State 114

0 $acceptresult $end $end shift, and go to state 212

State 115

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 213 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 116

270 export-declaration"export" declaration $default reduce using rule 270 (export-declaration)

State 117

205 declarationmodule-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 272 export-declaration"export" module-import-declaration [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "private", "protected", "public", "using", ";", "alignas", "(", "&", "asm", "[", ":", "}", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "module", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] $end reduce using rule 205 (declaration) $end [reduce using rule 272 (export-declaration)] "constexpr" reduce using rule 205 (declaration) "constexpr" [reduce using rule 272 (export-declaration)] "..." reduce using rule 205 (declaration) "..." [reduce using rule 272 (export-declaration)] "export" reduce using rule 205 (declaration) "export" [reduce using rule 272 (export-declaration)] "extern" reduce using rule 205 (declaration) "extern" [reduce using rule 272 (export-declaration)] IDENTIFIER reduce using rule 205 (declaration) IDENTIFIER [reduce using rule 272 (export-declaration)] "inline" reduce using rule 205 (declaration) "inline" [reduce using rule 272 (export-declaration)] "::" reduce using rule 205 (declaration) "::" [reduce using rule 272 (export-declaration)] "template" reduce using rule 205 (declaration) "template" [reduce using rule 272 (export-declaration)] "typename" reduce using rule 205 (declaration) "typename" [reduce using rule 272 (export-declaration)] "virtual" reduce using rule 205 (declaration) "virtual" [reduce using rule 272 (export-declaration)] "private" reduce using rule 205 (declaration) "private" [reduce using rule 272 (export-declaration)] "protected" reduce using rule 205 (declaration) "protected" [reduce using rule 272 (export-declaration)] "public" reduce using rule 205 (declaration) "public" [reduce using rule 272 (export-declaration)] "using" reduce using rule 205 (declaration) "using" [reduce using rule 272 (export-declaration)] ";" reduce using rule 205 (declaration) ";" [reduce using rule 272 (export-declaration)] "alignas" reduce using rule 205 (declaration) "alignas" [reduce using rule 272 (export-declaration)] "(" reduce using rule 205 (declaration) "(" [reduce using rule 272 (export-declaration)] "&" reduce using rule 205 (declaration) "&" [reduce using rule 272 (export-declaration)] "asm" reduce using rule 205 (declaration) "asm" [reduce using rule 272 (export-declaration)] "[" reduce using rule 205 (declaration) "[" [reduce using rule 272 (export-declaration)] ":" reduce using rule 205 (declaration) ":" [reduce using rule 272 (export-declaration)] "}" reduce using rule 205 (declaration) "}" [reduce using rule 272 (export-declaration)] "class" reduce using rule 205 (declaration) "class" [reduce using rule 272 (export-declaration)] "struct" reduce using rule 205 (declaration) "struct" [reduce using rule 272 (export-declaration)] "union" reduce using rule 205 (declaration) "union" [reduce using rule 272 (export-declaration)] "&&" reduce using rule 205 (declaration) "&&" [reduce using rule 272 (export-declaration)] "operator" reduce using rule 205 (declaration) "operator" [reduce using rule 272 (export-declaration)] "const" reduce using rule 205 (declaration) "const" [reduce using rule 272 (export-declaration)] "volatile" reduce using rule 205 (declaration) "volatile" [reduce using rule 272 (export-declaration)] "friend" reduce using rule 205 (declaration) "friend" [reduce using rule 272 (export-declaration)] "typedef" reduce using rule 205 (declaration) "typedef" [reduce using rule 272 (export-declaration)] "consteval" reduce using rule 205 (declaration) "consteval" [reduce using rule 272 (export-declaration)] "constinit" reduce using rule 205 (declaration) "constinit" [reduce using rule 272 (export-declaration)] "decltype" reduce using rule 205 (declaration) "decltype" [reduce using rule 272 (export-declaration)] "enum" reduce using rule 205 (declaration) "enum" [reduce using rule 272 (export-declaration)] "explicit" reduce using rule 205 (declaration) "explicit" [reduce using rule 272 (export-declaration)] "*" reduce using rule 205 (declaration) "*" [reduce using rule 272 (export-declaration)] "module" reduce using rule 205 (declaration) "module" [reduce using rule 272 (export-declaration)] "import" reduce using rule 205 (declaration) "import" [reduce using rule 272 (export-declaration)] "namespace" reduce using rule 205 (declaration) "namespace" [reduce using rule 272 (export-declaration)] "~" reduce using rule 205 (declaration) "~" [reduce using rule 272 (export-declaration)] "auto" reduce using rule 205 (declaration) "auto" [reduce using rule 272 (export-declaration)] "char" reduce using rule 205 (declaration) "char" [reduce using rule 272 (export-declaration)] "char8_t" reduce using rule 205 (declaration) "char8_t" [reduce using rule 272 (export-declaration)] "char16_t" reduce using rule 205 (declaration) "char16_t" [reduce using rule 272 (export-declaration)] "char32_t" reduce using rule 205 (declaration) "char32_t" [reduce using rule 272 (export-declaration)] "wchar_t" reduce using rule 205 (declaration) "wchar_t" [reduce using rule 272 (export-declaration)] "bool" reduce using rule 205 (declaration) "bool" [reduce using rule 272 (export-declaration)] "short" reduce using rule 205 (declaration) "short" [reduce using rule 272 (export-declaration)] "int" reduce using rule 205 (declaration) "int" [reduce using rule 272 (export-declaration)] "long" reduce using rule 205 (declaration) "long" [reduce using rule 272 (export-declaration)] "signed" reduce using rule 205 (declaration) "signed" [reduce using rule 272 (export-declaration)] "unsigned" reduce using rule 205 (declaration) "unsigned" [reduce using rule 272 (export-declaration)] "float" reduce using rule 205 (declaration) "float" [reduce using rule 272 (export-declaration)] "double" reduce using rule 205 (declaration) "double" [reduce using rule 272 (export-declaration)] "void" reduce using rule 205 (declaration) "void" [reduce using rule 272 (export-declaration)] "static_assert" reduce using rule 205 (declaration) "static_assert" [reduce using rule 272 (export-declaration)] "static" reduce using rule 205 (declaration) "static" [reduce using rule 272 (export-declaration)] "thread_local" reduce using rule 205 (declaration) "thread_local" [reduce using rule 272 (export-declaration)] "mutable" reduce using rule 205 (declaration) "mutable" [reduce using rule 272 (export-declaration)] $default reduce using rule 205 (declaration)

State 118

682 string-literalSTRING_LITERAL $default reduce using rule 682 (string-literal)

State 119

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 390 | "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "{" shift, and go to state 214 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 215 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 120

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 265 explicit-specialization"template" "<" ">" declaration 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 692 | "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 ">" shift, and go to state 219 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 225 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 121

455 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 189

State 122

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 229 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 231

State 123

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 232

State 124

26 TYPENAME-opt"typename" $default reduce using rule 26 (TYPENAME-opt)

State 125

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 134 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 126

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 233 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 127

768 using-enum-declaration"using" elaborated-enum-specifier ";" ";" shift, and go to state 234

State 128

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 765 using-declarator-listusing-declarator ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 235

State 129

763 using-declaration"using" using-declarator-list ";" 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "," shift, and go to state 236 ";" shift, and go to state 237

State 130

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 214 | "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 277 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 131

244 enum-key"enum" "class" $default reduce using rule 244 (enum-key)

State 132

245 enum-key"enum" "struct" $default reduce using rule 245 (enum-key)

State 133

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 134

228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 308

State 135

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier"explicit" "(" constant-expression ")" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 310 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 136

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["export", "module"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 332 global-module-fragment"module" ";" declaration-seq-opt 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "export" [reduce using rule 208 (declaration-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 208 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 312 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 137

432 module-name-qualifierIDENTIFIER "." "." shift, and go to state 313

State 138

432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier 436 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 137 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name-qualifier go to state 142 module-name-qualifier-opt go to state 314

State 139

339 header-nameHEADER_NAME $default reduce using rule 339 (header-name)

State 140

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 315

State 141

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 316

State 142

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." 435 module-name-qualifier-optmodule-name-qualifier [IDENTIFIER] IDENTIFIER shift, and go to state 317 IDENTIFIER [reduce using rule 435 (module-name-qualifier-opt)]

State 143

431 module-namemodule-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 318

State 144

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 319

State 145

234 enclosing-namespace-specifierIDENTIFIER ["::"] 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 320 $default reduce using rule 234 (enclosing-namespace-specifier)

State 146

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "::" shift, and go to state 321

State 147

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 322 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 148

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 264 | EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 323 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 149

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 324

State 150

680 storage-class-specifier"extern" $default reduce using rule 680 (storage-class-specifier)

State 151

188 decl-specifier"inline" $default reduce using rule 188 (decl-specifier)

State 152

71 attribute-declarationattribute-specifier-seq ";" $default reduce using rule 71 (attribute-declaration)

State 153

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 350 init-declarator-list init-declarator 351 | init-declarator-list "," init-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 184 init-declarator-list go to state 325 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 154

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 326

State 155

330 function-specifierexplicit-specifier $default reduce using rule 330 (function-specifier)

State 156

6 ELLIPSIS-opt"..." $default reduce using rule 6 (ELLIPSIS-opt)

State 157

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" "namespace" shift, and go to state 327

State 158

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" "(" shift, and go to state 328

State 159

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 329 ptr-declarator go to state 330 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 160

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 594 ptr-operator"&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 331

State 161

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" "(" shift, and go to state 332

State 162

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "[" shift, and go to state 333

State 163

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 595 ptr-operator"&&" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 334

State 164

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 335

State 165

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 213 declarator-idELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "~" shift, and go to state 336 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 337 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 qualified-id go to state 294 simple-template-id go to state 298 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 166

81 attribute-specifieralignment-specifier $default reduce using rule 81 (attribute-specifier)

State 167

82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier $default reduce using rule 82 (attribute-specifier-seq)

State 168

192 decl-specifier-seq-optdecl-specifier-seq ["...", IDENTIFIER, "::", "(", "&", "&&", "operator", "decltype", "*", "~"] 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 339 "&&" shift, and go to state 340 "&" [reduce using rule 192 (decl-specifier-seq-opt)] "[" reduce using rule 604 (ref-qualifier-opt) "&&" [reduce using rule 192 (decl-specifier-seq-opt)] $default reduce using rule 192 (decl-specifier-seq-opt) ref-qualifier go to state 341 ref-qualifier-opt go to state 342

State 169

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 343 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 170

476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" ";" shift, and go to state 344

State 171

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 345

State 172

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 "*" shift, and go to state 346 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 173

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 491 noptr-declaratornoptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 591 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 347 "[" shift, and go to state 348 "(" [reduce using rule 591 (ptr-declarator)] $default reduce using rule 591 (ptr-declarator) parameters-and-qualifiers go to state 349

State 174

211 declaratorptr-declarator $default reduce using rule 211 (declarator)

State 175

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 329 ptr-declarator go to state 350 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 176

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 142 class-specifierclass-head "{" member-specification-opt "}" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 351 "protected" shift, and go to state 352 "public" shift, and go to state 353 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 354 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 355 alias-declaration go to state 356 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 357 deduction-guide go to state 358 empty-declaration go to state 359 enum-key go to state 360 explicit-specialization go to state 361 explicit-specifier go to state 362 explicit-specifier-opt go to state 76 function-definition go to state 363 member-declaration go to state 364 member-specification go to state 365 member-specification-opt go to state 366 opaque-enum-declaration go to state 367 static_assert-declaration go to state 368 template-declaration go to state 369 template-head go to state 101 using-declaration go to state 370 using-enum-declaration go to state 371

State 177

84 attribute-specifier-seq-optattribute-specifier-seq $default reduce using rule 84 (attribute-specifier-seq-opt)

State 178

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 133 class-head-name nested-name-specifier-opt class-name 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 ":" shift, and go to state 372 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 100 (base-clause-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 base-clause go to state 373 base-clause-opt go to state 374 class-head-name go to state 375 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 376 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 179

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 377

State 180

138 class-namesimple-template-id ["::"] 230 elaborated-type-specifierclass-key simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id ["::"] "::" reduce using rule 138 (class-name) "::" [reduce using rule 230 (elaborated-type-specifier)] "::" [reduce using rule 732 (typedef-name)] $default reduce using rule 230 (elaborated-type-specifier)

State 181

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 189 decl-specifier-seqdecl-specifier attribute-specifier-seq-opt [",", "...", IDENTIFIER, "noexcept", "::", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "&&", "operator", "decltype", "->", ">", "*", "requires", "~"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 189 (decl-specifier-seq)] "[" [reduce using rule 189 (decl-specifier-seq)] $default reduce using rule 189 (decl-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 182

190 decl-specifier-seqdecl-specifier decl-specifier-seq $default reduce using rule 190 (decl-specifier-seq)

State 183

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 348 init-declaratordeclarator initializer-opt 349 | declarator requires-clause 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" 365 initializer-opt %empty [",", ";"] 366 | initializer 621 requires-clause "requires" constraint-logical-or-expression "=" shift, and go to state 378 "(" shift, and go to state 379 "{" shift, and go to state 380 "requires" shift, and go to state 381 $default reduce using rule 365 (initializer-opt) brace-or-equal-initializer go to state 382 braced-init-list go to state 383 initializer go to state 384 initializer-opt go to state 385 requires-clause go to state 386

State 184

350 init-declarator-listinit-declarator $default reduce using rule 350 (init-declarator-list)

State 185

351 init-declarator-listinit-declarator-list "," init-declarator 353 init-declarator-list-optinit-declarator-list [";"] "," shift, and go to state 387 $default reduce using rule 353 (init-declarator-list-opt)

State 186

640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" ";" shift, and go to state 388

State 187

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 "*" shift, and go to state 346 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 200

State 188

207 declaration-seqdeclaration-seq declaration $default reduce using rule 207 (declaration-seq)

State 189

455 nested-name-specifierdecltype-specifier "::" $default reduce using rule 455 (nested-name-specifier)

State 190

247 enum-specifierenum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 249 enumerator IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition enumerator 251 | enumerator "=" constant-expression 252 enumerator-list enumerator-definition 253 | enumerator-list "," enumerator-definition 254 enumerator-list-opt %empty ["}"] 255 | enumerator-list IDENTIFIER shift, and go to state 389 $default reduce using rule 254 (enumerator-list-opt) enumerator go to state 390 enumerator-definition go to state 391 enumerator-list go to state 392 enumerator-list-opt go to state 393

State 191

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-name nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt %empty [":", "{"] 242 | enum-head-name 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 394 enum-head-name-opt go to state 395 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 396 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 192

696 template-nameIDENTIFIER $default reduce using rule 696 (template-name)

State 193

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "(" shift, and go to state 397

State 194

8 EXPORT-opt"export" $default reduce using rule 8 (EXPORT-opt)

State 195

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" "module" shift, and go to state 398

State 196

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end, "module"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "module" reduce using rule 208 (declaration-seq-opt) "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 399 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 197

454 nested-name-specifiernamespace-name "::" $default reduce using rule 454 (nested-name-specifier)

State 198

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" "::" shift, and go to state 400

State 199

22 TEMPLATE-opt"template" [IDENTIFIER, "operator", "~"] 644 simple-template-id template-name "<" template-argument-list-opt ">" 646 simple-type-specifiernested-name-specifier "template" simple-template-id 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] $default reduce using rule 22 (TEMPLATE-opt) simple-template-id go to state 401 template-name go to state 102

State 200

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 402 template-name go to state 102

State 201

137 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 151 concept-nameIDENTIFIER ["decltype", "<", "auto"] 246 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 696 template-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 731 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 137 (class-name) "," [reduce using rule 246 (enum-name)] "," [reduce using rule 696 (template-name)] "," [reduce using rule 731 (typedef-name)] "constexpr" reduce using rule 137 (class-name) "constexpr" [reduce using rule 246 (enum-name)] "constexpr" [reduce using rule 696 (template-name)] "constexpr" [reduce using rule 731 (typedef-name)] "..." reduce using rule 137 (class-name) "..." [reduce using rule 246 (enum-name)] "..." [reduce using rule 696 (template-name)] "..." [reduce using rule 731 (typedef-name)] "export" reduce using rule 137 (class-name) "export" [reduce using rule 246 (enum-name)] "export" [reduce using rule 696 (template-name)] "export" [reduce using rule 731 (typedef-name)] "extern" reduce using rule 137 (class-name) "extern" [reduce using rule 246 (enum-name)] "extern" [reduce using rule 696 (template-name)] "extern" [reduce using rule 731 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 696 (template-name)] IDENTIFIER [reduce using rule 731 (typedef-name)] "inline" reduce using rule 137 (class-name) "inline" [reduce using rule 246 (enum-name)] "inline" [reduce using rule 696 (template-name)] "inline" [reduce using rule 731 (typedef-name)] "noexcept" reduce using rule 137 (class-name) "noexcept" [reduce using rule 246 (enum-name)] "noexcept" [reduce using rule 696 (template-name)] "noexcept" [reduce using rule 731 (typedef-name)] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 696 (template-name)] "::" [reduce using rule 731 (typedef-name)] "template" reduce using rule 137 (class-name) "template" [reduce using rule 246 (enum-name)] "template" [reduce using rule 696 (template-name)] "template" [reduce using rule 731 (typedef-name)] "typename" reduce using rule 137 (class-name) "typename" [reduce using rule 246 (enum-name)] "typename" [reduce using rule 696 (template-name)] "typename" [reduce using rule 731 (typedef-name)] "virtual" reduce using rule 137 (class-name) "virtual" [reduce using rule 246 (enum-name)] "virtual" [reduce using rule 696 (template-name)] "virtual" [reduce using rule 731 (typedef-name)] "+" reduce using rule 137 (class-name) "+" [reduce using rule 246 (enum-name)] "+" [reduce using rule 696 (template-name)] "+" [reduce using rule 731 (typedef-name)] "-" reduce using rule 137 (class-name) "-" [reduce using rule 246 (enum-name)] "-" [reduce using rule 696 (template-name)] "-" [reduce using rule 731 (typedef-name)] "using" reduce using rule 137 (class-name) "using" [reduce using rule 246 (enum-name)] "using" [reduce using rule 696 (template-name)] "using" [reduce using rule 731 (typedef-name)] "=" reduce using rule 137 (class-name) "=" [reduce using rule 246 (enum-name)] "=" [reduce using rule 696 (template-name)] "=" [reduce using rule 731 (typedef-name)] ";" reduce using rule 137 (class-name) ";" [reduce using rule 246 (enum-name)] ";" [reduce using rule 696 (template-name)] ";" [reduce using rule 731 (typedef-name)] "alignas" reduce using rule 137 (class-name) "alignas" [reduce using rule 246 (enum-name)] "alignas" [reduce using rule 696 (template-name)] "alignas" [reduce using rule 731 (typedef-name)] "(" reduce using rule 137 (class-name) "(" [reduce using rule 246 (enum-name)] "(" [reduce using rule 696 (template-name)] "(" [reduce using rule 731 (typedef-name)] ")" reduce using rule 137 (class-name) ")" [reduce using rule 246 (enum-name)] ")" [reduce using rule 696 (template-name)] ")" [reduce using rule 731 (typedef-name)] "&" reduce using rule 137 (class-name) "&" [reduce using rule 246 (enum-name)] "&" [reduce using rule 696 (template-name)] "&" [reduce using rule 731 (typedef-name)] "asm" reduce using rule 137 (class-name) "asm" [reduce using rule 246 (enum-name)] "asm" [reduce using rule 696 (template-name)] "asm" [reduce using rule 731 (typedef-name)] "*=" reduce using rule 137 (class-name) "*=" [reduce using rule 246 (enum-name)] "*=" [reduce using rule 696 (template-name)] "*=" [reduce using rule 731 (typedef-name)] "/=" reduce using rule 137 (class-name) "/=" [reduce using rule 246 (enum-name)] "/=" [reduce using rule 696 (template-name)] "/=" [reduce using rule 731 (typedef-name)] "%=" reduce using rule 137 (class-name) "%=" [reduce using rule 246 (enum-name)] "%=" [reduce using rule 696 (template-name)] "%=" [reduce using rule 731 (typedef-name)] "+=" reduce using rule 137 (class-name) "+=" [reduce using rule 246 (enum-name)] "+=" [reduce using rule 696 (template-name)] "+=" [reduce using rule 731 (typedef-name)] "-=" reduce using rule 137 (class-name) "-=" [reduce using rule 246 (enum-name)] "-=" [reduce using rule 696 (template-name)] "-=" [reduce using rule 731 (typedef-name)] ">>=" reduce using rule 137 (class-name) ">>=" [reduce using rule 246 (enum-name)] ">>=" [reduce using rule 696 (template-name)] ">>=" [reduce using rule 731 (typedef-name)] "<<=" reduce using rule 137 (class-name) "<<=" [reduce using rule 246 (enum-name)] "<<=" [reduce using rule 696 (template-name)] "<<=" [reduce using rule 731 (typedef-name)] "&=" reduce using rule 137 (class-name) "&=" [reduce using rule 246 (enum-name)] "&=" [reduce using rule 696 (template-name)] "&=" [reduce using rule 731 (typedef-name)] "^=" reduce using rule 137 (class-name) "^=" [reduce using rule 246 (enum-name)] "^=" [reduce using rule 696 (template-name)] "^=" [reduce using rule 731 (typedef-name)] "|=" reduce using rule 137 (class-name) "|=" [reduce using rule 246 (enum-name)] "|=" [reduce using rule 696 (template-name)] "|=" [reduce using rule 731 (typedef-name)] "[" reduce using rule 137 (class-name) "[" [reduce using rule 246 (enum-name)] "[" [reduce using rule 696 (template-name)] "[" [reduce using rule 731 (typedef-name)] "]" reduce using rule 137 (class-name) "]" [reduce using rule 246 (enum-name)] "]" [reduce using rule 696 (template-name)] "]" [reduce using rule 731 (typedef-name)] ":" reduce using rule 137 (class-name) ":" [reduce using rule 246 (enum-name)] ":" [reduce using rule 696 (template-name)] ":" [reduce using rule 731 (typedef-name)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 246 (enum-name)] "{" [reduce using rule 696 (template-name)] "{" [reduce using rule 731 (typedef-name)] "}" reduce using rule 137 (class-name) "}" [reduce using rule 246 (enum-name)] "}" [reduce using rule 696 (template-name)] "}" [reduce using rule 731 (typedef-name)] "class" reduce using rule 137 (class-name) "class" [reduce using rule 246 (enum-name)] "class" [reduce using rule 696 (template-name)] "class" [reduce using rule 731 (typedef-name)] "struct" reduce using rule 137 (class-name) "struct" [reduce using rule 246 (enum-name)] "struct" [reduce using rule 696 (template-name)] "struct" [reduce using rule 731 (typedef-name)] "union" reduce using rule 137 (class-name) "union" [reduce using rule 246 (enum-name)] "union" [reduce using rule 696 (template-name)] "union" [reduce using rule 731 (typedef-name)] "final" reduce using rule 137 (class-name) "final" [reduce using rule 246 (enum-name)] "final" [reduce using rule 696 (template-name)] "final" [reduce using rule 731 (typedef-name)] "<=>" reduce using rule 137 (class-name) "<=>" [reduce using rule 246 (enum-name)] "<=>" [reduce using rule 696 (template-name)] "<=>" [reduce using rule 731 (typedef-name)] "concept" reduce using rule 137 (class-name) "concept" [reduce using rule 246 (enum-name)] "concept" [reduce using rule 696 (template-name)] "concept" [reduce using rule 731 (typedef-name)] "?" reduce using rule 137 (class-name) "?" [reduce using rule 246 (enum-name)] "?" [reduce using rule 696 (template-name)] "?" [reduce using rule 731 (typedef-name)] "&&" reduce using rule 137 (class-name) "&&" [reduce using rule 246 (enum-name)] "&&" [reduce using rule 696 (template-name)] "&&" [reduce using rule 731 (typedef-name)] "||" reduce using rule 137 (class-name) "||" [reduce using rule 246 (enum-name)] "||" [reduce using rule 696 (template-name)] "||" [reduce using rule 731 (typedef-name)] "operator" reduce using rule 137 (class-name) "operator" [reduce using rule 246 (enum-name)] "operator" [reduce using rule 696 (template-name)] "operator" [reduce using rule 731 (typedef-name)] "const" reduce using rule 137 (class-name) "const" [reduce using rule 246 (enum-name)] "const" [reduce using rule 696 (template-name)] "const" [reduce using rule 731 (typedef-name)] "volatile" reduce using rule 137 (class-name) "volatile" [reduce using rule 246 (enum-name)] "volatile" [reduce using rule 696 (template-name)] "volatile" [reduce using rule 731 (typedef-name)] "friend" reduce using rule 137 (class-name) "friend" [reduce using rule 246 (enum-name)] "friend" [reduce using rule 696 (template-name)] "friend" [reduce using rule 731 (typedef-name)] "typedef" reduce using rule 137 (class-name) "typedef" [reduce using rule 246 (enum-name)] "typedef" [reduce using rule 696 (template-name)] "typedef" [reduce using rule 731 (typedef-name)] "consteval" reduce using rule 137 (class-name) "consteval" [reduce using rule 246 (enum-name)] "consteval" [reduce using rule 696 (template-name)] "consteval" [reduce using rule 731 (typedef-name)] "constinit" reduce using rule 137 (class-name) "constinit" [reduce using rule 246 (enum-name)] "constinit" [reduce using rule 696 (template-name)] "constinit" [reduce using rule 731 (typedef-name)] "decltype" reduce using rule 137 (class-name) "decltype" [reduce using rule 151 (concept-name)] "decltype" [reduce using rule 246 (enum-name)] "decltype" [reduce using rule 696 (template-name)] "decltype" [reduce using rule 731 (typedef-name)] "->" reduce using rule 137 (class-name) "->" [reduce using rule 246 (enum-name)] "->" [reduce using rule 696 (template-name)] "->" [reduce using rule 731 (typedef-name)] "." reduce using rule 137 (class-name) "." [reduce using rule 246 (enum-name)] "." [reduce using rule 696 (template-name)] "." [reduce using rule 731 (typedef-name)] "enum" reduce using rule 137 (class-name) "enum" [reduce using rule 246 (enum-name)] "enum" [reduce using rule 696 (template-name)] "enum" [reduce using rule 731 (typedef-name)] "==" reduce using rule 137 (class-name) "==" [reduce using rule 246 (enum-name)] "==" [reduce using rule 696 (template-name)] "==" [reduce using rule 731 (typedef-name)] "!=" reduce using rule 137 (class-name) "!=" [reduce using rule 246 (enum-name)] "!=" [reduce using rule 696 (template-name)] "!=" [reduce using rule 731 (typedef-name)] "^" reduce using rule 137 (class-name) "^" [reduce using rule 246 (enum-name)] "^" [reduce using rule 696 (template-name)] "^" [reduce using rule 731 (typedef-name)] "<" reduce using rule 137 (class-name) "<" [reduce using rule 151 (concept-name)] "<" [reduce using rule 246 (enum-name)] "<" [reduce using rule 696 (template-name)] "<" [reduce using rule 731 (typedef-name)] ">" reduce using rule 137 (class-name) ">" [reduce using rule 246 (enum-name)] ">" [reduce using rule 696 (template-name)] ">" [reduce using rule 731 (typedef-name)] "explicit" reduce using rule 137 (class-name) "explicit" [reduce using rule 246 (enum-name)] "explicit" [reduce using rule 696 (template-name)] "explicit" [reduce using rule 731 (typedef-name)] "*" reduce using rule 137 (class-name) "*" [reduce using rule 246 (enum-name)] "*" [reduce using rule 696 (template-name)] "*" [reduce using rule 731 (typedef-name)] "/" reduce using rule 137 (class-name) "/" [reduce using rule 246 (enum-name)] "/" [reduce using rule 696 (template-name)] "/" [reduce using rule 731 (typedef-name)] "%" reduce using rule 137 (class-name) "%" [reduce using rule 246 (enum-name)] "%" [reduce using rule 696 (template-name)] "%" [reduce using rule 731 (typedef-name)] "|" reduce using rule 137 (class-name) "|" [reduce using rule 246 (enum-name)] "|" [reduce using rule 696 (template-name)] "|" [reduce using rule 731 (typedef-name)] "<<" reduce using rule 137 (class-name) "<<" [reduce using rule 246 (enum-name)] "<<" [reduce using rule 696 (template-name)] "<<" [reduce using rule 731 (typedef-name)] ">>" reduce using rule 137 (class-name) ">>" [reduce using rule 246 (enum-name)] ">>" [reduce using rule 696 (template-name)] ">>" [reduce using rule 731 (typedef-name)] "<=" reduce using rule 137 (class-name) "<=" [reduce using rule 246 (enum-name)] "<=" [reduce using rule 696 (template-name)] "<=" [reduce using rule 731 (typedef-name)] ">=" reduce using rule 137 (class-name) ">=" [reduce using rule 246 (enum-name)] ">=" [reduce using rule 696 (template-name)] ">=" [reduce using rule 731 (typedef-name)] ".*" reduce using rule 137 (class-name) ".*" [reduce using rule 246 (enum-name)] ".*" [reduce using rule 696 (template-name)] ".*" [reduce using rule 731 (typedef-name)] "->*" reduce using rule 137 (class-name) "->*" [reduce using rule 246 (enum-name)] "->*" [reduce using rule 696 (template-name)] "->*" [reduce using rule 731 (typedef-name)] "try" reduce using rule 137 (class-name) "try" [reduce using rule 246 (enum-name)] "try" [reduce using rule 696 (template-name)] "try" [reduce using rule 731 (typedef-name)] "import" reduce using rule 137 (class-name) "import" [reduce using rule 246 (enum-name)] "import" [reduce using rule 696 (template-name)] "import" [reduce using rule 731 (typedef-name)] "namespace" reduce using rule 137 (class-name) "namespace" [reduce using rule 246 (enum-name)] "namespace" [reduce using rule 696 (template-name)] "namespace" [reduce using rule 731 (typedef-name)] "requires" reduce using rule 137 (class-name) "requires" [reduce using rule 246 (enum-name)] "requires" [reduce using rule 696 (template-name)] "requires" [reduce using rule 731 (typedef-name)] "~" reduce using rule 137 (class-name) "~" [reduce using rule 246 (enum-name)] "~" [reduce using rule 696 (template-name)] "~" [reduce using rule 731 (typedef-name)] "++" reduce using rule 137 (class-name) "++" [reduce using rule 246 (enum-name)] "++" [reduce using rule 696 (template-name)] "++" [reduce using rule 731 (typedef-name)] "--" reduce using rule 137 (class-name) "--" [reduce using rule 246 (enum-name)] "--" [reduce using rule 696 (template-name)] "--" [reduce using rule 731 (typedef-name)] "auto" reduce using rule 137 (class-name) "auto" [reduce using rule 151 (concept-name)] "auto" [reduce using rule 246 (enum-name)] "auto" [reduce using rule 696 (template-name)] "auto" [reduce using rule 731 (typedef-name)] "char" reduce using rule 137 (class-name) "char" [reduce using rule 246 (enum-name)] "char" [reduce using rule 696 (template-name)] "char" [reduce using rule 731 (typedef-name)] "char8_t" reduce using rule 137 (class-name) "char8_t" [reduce using rule 246 (enum-name)] "char8_t" [reduce using rule 696 (template-name)] "char8_t" [reduce using rule 731 (typedef-name)] "char16_t" reduce using rule 137 (class-name) "char16_t" [reduce using rule 246 (enum-name)] "char16_t" [reduce using rule 696 (template-name)] "char16_t" [reduce using rule 731 (typedef-name)] "char32_t" reduce using rule 137 (class-name) "char32_t" [reduce using rule 246 (enum-name)] "char32_t" [reduce using rule 696 (template-name)] "char32_t" [reduce using rule 731 (typedef-name)] "wchar_t" reduce using rule 137 (class-name) "wchar_t" [reduce using rule 246 (enum-name)] "wchar_t" [reduce using rule 696 (template-name)] "wchar_t" [reduce using rule 731 (typedef-name)] "bool" reduce using rule 137 (class-name) "bool" [reduce using rule 246 (enum-name)] "bool" [reduce using rule 696 (template-name)] "bool" [reduce using rule 731 (typedef-name)] "short" reduce using rule 137 (class-name) "short" [reduce using rule 246 (enum-name)] "short" [reduce using rule 696 (template-name)] "short" [reduce using rule 731 (typedef-name)] "int" reduce using rule 137 (class-name) "int" [reduce using rule 246 (enum-name)] "int" [reduce using rule 696 (template-name)] "int" [reduce using rule 731 (typedef-name)] "long" reduce using rule 137 (class-name) "long" [reduce using rule 246 (enum-name)] "long" [reduce using rule 696 (template-name)] "long" [reduce using rule 731 (typedef-name)] "signed" reduce using rule 137 (class-name) "signed" [reduce using rule 246 (enum-name)] "signed" [reduce using rule 696 (template-name)] "signed" [reduce using rule 731 (typedef-name)] "unsigned" reduce using rule 137 (class-name) "unsigned" [reduce using rule 246 (enum-name)] "unsigned" [reduce using rule 696 (template-name)] "unsigned" [reduce using rule 731 (typedef-name)] "float" reduce using rule 137 (class-name) "float" [reduce using rule 246 (enum-name)] "float" [reduce using rule 696 (template-name)] "float" [reduce using rule 731 (typedef-name)] "double" reduce using rule 137 (class-name) "double" [reduce using rule 246 (enum-name)] "double" [reduce using rule 696 (template-name)] "double" [reduce using rule 731 (typedef-name)] "void" reduce using rule 137 (class-name) "void" [reduce using rule 246 (enum-name)] "void" [reduce using rule 696 (template-name)] "void" [reduce using rule 731 (typedef-name)] "static_assert" reduce using rule 137 (class-name) "static_assert" [reduce using rule 246 (enum-name)] "static_assert" [reduce using rule 696 (template-name)] "static_assert" [reduce using rule 731 (typedef-name)] "static" reduce using rule 137 (class-name) "static" [reduce using rule 246 (enum-name)] "static" [reduce using rule 696 (template-name)] "static" [reduce using rule 731 (typedef-name)] "thread_local" reduce using rule 137 (class-name) "thread_local" [reduce using rule 246 (enum-name)] "thread_local" [reduce using rule 696 (template-name)] "thread_local" [reduce using rule 731 (typedef-name)] "mutable" reduce using rule 137 (class-name) "mutable" [reduce using rule 246 (enum-name)] "mutable" [reduce using rule 696 (template-name)] "mutable" [reduce using rule 731 (typedef-name)] "override" reduce using rule 137 (class-name) "override" [reduce using rule 246 (enum-name)] "override" [reduce using rule 696 (template-name)] "override" [reduce using rule 731 (typedef-name)] $default reduce using rule 137 (class-name)

State 202

708 type-constraintnested-name-specifier-opt concept-name [",", "...", IDENTIFIER, "=", ";", "decltype", ">", "auto"] 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" "<" shift, and go to state 403 $default reduce using rule 708 (type-constraint)

State 203

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" 649 simple-type-specifiernested-name-specifier-opt template-name [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 208 "<" [reduce using rule 649 (simple-type-specifier)] $default reduce using rule 649 (simple-type-specifier)

State 204

645 simple-type-specifiernested-name-specifier-opt type-name $default reduce using rule 645 (simple-type-specifier)

State 205

150 concept-definition"concept" concept-name "=" constraint-expression ";" 151 concept-name IDENTIFIER IDENTIFIER shift, and go to state 404 concept-name go to state 405

State 206

691 template-declarationtemplate-head concept-definition $default reduce using rule 691 (template-declaration)

State 207

690 template-declarationtemplate-head declaration $default reduce using rule 690 (template-declaration)

State 208

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 644 | template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 410 template-argument-list go to state 411 template-argument-list-opt go to state 412 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 209

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "(" shift, and go to state 417

State 210

554 placeholder-type-specifiertype-constraint-opt "auto" $default reduce using rule 554 (placeholder-type-specifier)

State 211

453 nested-name-specifiertype-name "::" $default reduce using rule 453 (nested-name-specifier)

State 212

0 $acceptresult $end $default accept

State 213

271 export-declaration"export" "{" declaration-seq-opt "}" "}" shift, and go to state 418

State 214

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 390 | "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 419 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 215

391 linkage-specification"extern" string-literal declaration $default reduce using rule 391 (linkage-specification)

State 216

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "<" shift, and go to state 420

State 217

723 type-parameter-key"typename" $default reduce using rule 723 (type-parameter-key)

State 218

722 type-parameter-key"class" $default reduce using rule 722 (type-parameter-key)

State 219

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 265 | "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 421 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 220

23 THIS-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 24 | "this" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "this" shift, and go to state 422 "alignas" shift, and go to state 158 "[" shift, and go to state 162 $default reduce using rule 23 (THIS-opt) THIS-opt go to state 423 alignment-specifier go to state 166 attribute-specifier go to state 167

State 221

151 concept-name IDENTIFIER 708 type-constraintnested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" IDENTIFIER shift, and go to state 404 concept-name go to state 202

State 222

698 template-parameterparameter-declaration $default reduce using rule 698 (template-parameter)

State 223

720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" "typename" shift, and go to state 217 "class" shift, and go to state 218 type-parameter-key go to state 424

State 224

699 template-parameter-listtemplate-parameter $default reduce using rule 699 (template-parameter-list)

State 225

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt 700 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 425 ">" shift, and go to state 426

State 226

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 427 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 428 IDENTIFIER-opt go to state 429

State 227

697 template-parametertype-parameter $default reduce using rule 697 (template-parameter)

State 228

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 427 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 430 IDENTIFIER-opt go to state 431

State 229

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 733 typename-specifier"typename" nested-name-specifier IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 400 "::" [reduce using rule 733 (typename-specifier)] $default reduce using rule 733 (typename-specifier)

State 230

22 TEMPLATE-opt"template" $default reduce using rule 22 (TEMPLATE-opt)

State 231

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 734 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 192 simple-template-id go to state 432 template-name go to state 102

State 232

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier "=" shift, and go to state 433 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 233

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 169 conversion-function-id "operator" conversion-type-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 434 "template" shift, and go to state 230 "operator" shift, and go to state 249 "~" shift, and go to state 336 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 200 conversion-function-id go to state 273 literal-operator-id go to state 283 operator-function-id go to state 290 simple-template-id go to state 435 template-id go to state 301 template-name go to state 102 unqualified-id go to state 436

State 234

768 using-enum-declaration"using" elaborated-enum-specifier ";" $default reduce using rule 768 (using-enum-declaration)

State 235

765 using-declarator-listusing-declarator ELLIPSIS-opt $default reduce using rule 765 (using-declarator-list)

State 236

25 TYPENAME-opt %empty [IDENTIFIER, "::", "decltype"] 26 | "typename" 764 using-declarator TYPENAME-opt nested-name-specifier unqualified-id 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "typename" shift, and go to state 124 $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 126 using-declarator go to state 437

State 237

763 using-declaration"using" using-declarator-list ";" $default reduce using rule 763 (using-declaration)

State 238

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] 755 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "::" [reduce using rule 755 (unqualified-id)] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 239

477 noexcept-expression"noexcept" "(" expression ")" "(" shift, and go to state 438

State 240

752 unary-operator"!" $default reduce using rule 752 (unary-operator)

State 241

20 SCOPE-opt"::" ["delete", "new"] 452 nested-name-specifier"::" [IDENTIFIER, "template", "operator", "~"] "delete" reduce using rule 20 (SCOPE-opt) "new" reduce using rule 20 (SCOPE-opt) $default reduce using rule 452 (nested-name-specifier)

State 242

578 primary-expression"this" $default reduce using rule 578 (primary-expression)

State 243

750 unary-operator"+" $default reduce using rule 750 (unary-operator)

State 244

751 unary-operator"-" $default reduce using rule 751 (unary-operator)

State 245

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 439 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 440 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 441 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 442 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 246

749 unary-operator"&" $default reduce using rule 749 (unary-operator)

State 247

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 443 "this" shift, and go to state 444 "=" shift, and go to state 445 "&" shift, and go to state 446 "*" shift, and go to state 447 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 448 capture go to state 449 capture-default go to state 450 capture-list go to state 451 init-capture go to state 452 lambda-capture go to state 453 lambda-capture-opt go to state 454 simple-capture go to state 455

State 248

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 90 | "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 456 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 249

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id"operator" conversion-type-id 170 conversion-type-id type-specifier-seq conversion-declarator-opt 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 392 literal-operator-id"operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 497 operator-function-id"operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 499 overloadable-operator "new" 500 | "delete" 501 | "new" "[" "]" 502 | "delete" "[" "]" 503 | "co_await" 504 | "(" ")" 505 | "[" "]" 506 | "->" 507 | "->*" 508 | "~" 509 | "!" 510 | "+" 511 | "-" 512 | "*" 513 | "/" 514 | "%" 515 | "^" 516 | "&" 517 | "|" 518 | "=" 519 | "+=" 520 | "-=" 521 | "*=" 522 | "/=" 523 | "%=" 524 | "^=" 525 | "&=" 526 | "|=" 527 | "==" 528 | "!=" 529 | "<" 530 | ">" 531 | "<=" 532 | ">=" 533 | "<=>" 534 | "&&" 535 | "||" 536 | "<<" 537 | ">>" 538 | "<<=" 539 | ">>=" 540 | "++" 541 | "--" 542 | "," 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 762 user-defined-string-literal string-literal ud-suffix "," shift, and go to state 457 IDENTIFIER shift, and go to state 4 "!" shift, and go to state 458 "::" shift, and go to state 6 "typename" shift, and go to state 8 "+" shift, and go to state 459 "-" shift, and go to state 460 "=" shift, and go to state 461 "(" shift, and go to state 462 "&" shift, and go to state 463 "*=" shift, and go to state 464 "/=" shift, and go to state 465 "%=" shift, and go to state 466 "+=" shift, and go to state 467 "-=" shift, and go to state 468 ">>=" shift, and go to state 469 "<<=" shift, and go to state 470 "&=" shift, and go to state 471 "^=" shift, and go to state 472 "|=" shift, and go to state 473 "[" shift, and go to state 474 "co_await" shift, and go to state 475 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "<=>" shift, and go to state 476 "&&" shift, and go to state 477 "||" shift, and go to state 478 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "->" shift, and go to state 479 "delete" shift, and go to state 480 "enum" shift, and go to state 125 "==" shift, and go to state 481 "!=" shift, and go to state 482 "^" shift, and go to state 483 "<" shift, and go to state 484 ">" shift, and go to state 485 "*" shift, and go to state 486 "/" shift, and go to state 487 "%" shift, and go to state 488 "|" shift, and go to state 489 "<<" shift, and go to state 490 ">>" shift, and go to state 491 "<=" shift, and go to state 492 ">=" shift, and go to state 493 "->*" shift, and go to state 494 "new" shift, and go to state 495 "~" shift, and go to state 496 "++" shift, and go to state 497 "--" shift, and go to state 498 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 conversion-type-id go to state 499 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 overloadable-operator go to state 500 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 string-literal go to state 501 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 502 typedef-name go to state 108 typename-specifier go to state 109 user-defined-string-literal go to state 503

State 250

748 unary-operator"*" $default reduce using rule 748 (unary-operator)

State 251

616 requirement-parameter-list "(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt %empty ["{"] 618 | requirement-parameter-list 624 requires-expression"requires" requirement-parameter-list-opt requirement-body "(" shift, and go to state 504 $default reduce using rule 617 (requirement-parameter-list-opt) requirement-parameter-list go to state 505 requirement-parameter-list-opt go to state 506

State 252

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 753 unary-operator"~" [IDENTIFIER, "noexcept", "!", "::", "this", "typename", "+", "-", "(", "&", "[", "co_await", "operator", "decltype", "delete", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", STRING_LITERAL, "sizeof", "alignof"] 759 unqualified-id"~" type-name 760 | "~" decltype-specifier IDENTIFIER shift, and go to state 507 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 753 (unary-operator)] "decltype" [reduce using rule 753 (unary-operator)] $default reduce using rule 753 (unary-operator) class-name go to state 55 decltype-specifier go to state 508 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 509 typedef-name go to state 108

State 253

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 510 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 254

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 511 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 255

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 512

State 256

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 513

State 257

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 514

State 258

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "<" shift, and go to state 515

State 259

574 postfix-expression"typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" "(" shift, and go to state 516

State 260

576 primary-expression"literal" $default reduce using rule 576 (primary-expression)

State 261

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt %empty [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 55 | assignment-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 701 | "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 54 (assignment-expression-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 517 assignment-expression-opt go to state 518 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 262

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id "..." shift, and go to state 519 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 520 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 521 unary-operator go to state 305 unqualified-id go to state 306

State 263

744 unary-expression"alignof" "(" type-id ")" "(" shift, and go to state 522

State 264

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 775 | "co_yield" assignment-expression 776 | "co_yield" braced-init-list 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 523 await-expression go to state 269 braced-init-list go to state 524 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 265

222 delete-expressionSCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt "delete" shift, and go to state 525 "new" shift, and go to state 526

State 266

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 633 shift-expressionadditive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 527 "-" shift, and go to state 528 $default reduce using rule 633 (shift-expression)

State 267

48 and-expressionand-expression "&" equality-expression 262 exclusive-or-expressionand-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 529 $default reduce using rule 262 (exclusive-or-expression)

State 268

277 expressionassignment-expression $default reduce using rule 277 (expression)

State 269

740 unary-expressionawait-expression $default reduce using rule 740 (unary-expression)

State 270

556 pm-expressioncast-expression $default reduce using rule 556 (pm-expression)

State 271

147 compare-expressioncompare-expression "<=>" shift-expression 606 relational-expressioncompare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 530 $default reduce using rule 606 (relational-expression)

State 272

50 assignment-expressionconditional-expression $default reduce using rule 50 (assignment-expression)

State 273

757 unqualified-idconversion-function-id $default reduce using rule 757 (unqualified-id)

State 274

747 unary-expressiondelete-expression $default reduce using rule 747 (unary-expression)

State 275

47 and-expressionequality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 257 equality-expressionequality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression "==" shift, and go to state 531 "!=" shift, and go to state 532 $default reduce using rule 47 (and-expression)

State 276

263 exclusive-or-expressionexclusive-or-expression "^" and-expression 344 inclusive-or-expressionexclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 533 $default reduce using rule 344 (inclusive-or-expression)

State 277

214 decltype-specifier"decltype" "(" expression ")" 278 expressionexpression "," assignment-expression "," shift, and go to state 534 ")" shift, and go to state 535

State 278

582 primary-expressionfold-expression $default reduce using rule 582 (primary-expression)

State 279

580 primary-expressionid-expression $default reduce using rule 580 (primary-expression)

State 280

345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 394 logical-and-expressioninclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 536 $default reduce using rule 394 (logical-and-expression)

State 281

581 primary-expressionlambda-expression $default reduce using rule 581 (primary-expression)

State 282

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 384 lambda-declarator lambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 386 lambda-expressionlambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 537 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "<" shift, and go to state 538 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 539 decl-specifier-seq-opt go to state 540 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-declarator go to state 541 lambda-specifiers go to state 542 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 283

695 template-idliteral-operator-id "<" template-argument-list-opt ">" 758 unqualified-idliteral-operator-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 543 "<" [reduce using rule 758 (unqualified-id)] $default reduce using rule 758 (unqualified-id)

State 284

395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 396 logical-or-expressionlogical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 544 $default reduce using rule 396 (logical-or-expression)

State 285

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause 56 assignment-operator "=" 57 | "*=" 58 | "/=" 59 | "%=" 60 | "+=" 61 | "-=" 62 | ">>=" 63 | "<<=" 64 | "&=" 65 | "^=" 66 | "|=" 156 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 157 | logical-or-expression "?" expression ":" assignment-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "=" shift, and go to state 545 "*=" shift, and go to state 546 "/=" shift, and go to state 547 "%=" shift, and go to state 548 "+=" shift, and go to state 549 "-=" shift, and go to state 550 ">>=" shift, and go to state 551 "<<=" shift, and go to state 552 "&=" shift, and go to state 553 "^=" shift, and go to state 554 "|=" shift, and go to state 555 "?" shift, and go to state 556 "||" shift, and go to state 557 "=" [reduce using rule 156 (conditional-expression)] $default reduce using rule 156 (conditional-expression) assignment-operator go to state 558

State 286

41 additive-expressionmultiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 559 "/" shift, and go to state 560 "%" shift, and go to state 561 $default reduce using rule 41 (additive-expression)

State 287

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 646 simple-type-specifiernested-name-specifier "template" simple-template-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 199 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 562

State 288

746 unary-expressionnew-expression $default reduce using rule 746 (unary-expression)

State 289

745 unary-expressionnoexcept-expression $default reduce using rule 745 (unary-expression)

State 290

694 template-idoperator-function-id "<" template-argument-list-opt ">" 756 unqualified-idoperator-function-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" shift, and go to state 563 "<" [reduce using rule 756 (unqualified-id)] $default reduce using rule 756 (unqualified-id)

State 291

439 multiplicative-expressionpm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 564 "->*" shift, and go to state 565 $default reduce using rule 439 (multiplicative-expression)

State 292

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 736 unary-expressionpostfix-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "(" shift, and go to state 566 "[" shift, and go to state 567 "->" shift, and go to state 568 "." shift, and go to state 569 "++" shift, and go to state 570 "--" shift, and go to state 571 $default reduce using rule 736 (unary-expression)

State 293

559 postfix-expressionprimary-expression $default reduce using rule 559 (postfix-expression)

State 294

341 id-expressionqualified-id $default reduce using rule 341 (id-expression)

State 295

256 equality-expressionrelational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", ">", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 572 ">" shift, and go to state 573 "<=" shift, and go to state 574 ">=" shift, and go to state 575 ">" [reduce using rule 256 (equality-expression)] $default reduce using rule 256 (equality-expression)

State 296

583 primary-expressionrequires-expression $default reduce using rule 583 (primary-expression)

State 297

146 compare-expressionshift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 634 shift-expressionshift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression "<<" shift, and go to state 576 ">>" shift, and go to state 577 $default reduce using rule 146 (compare-expression)

State 298

138 class-namesimple-template-id ["::"] 693 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 732 typedef-namesimple-template-id ["::"] "::" reduce using rule 138 (class-name) "::" [reduce using rule 693 (template-id)] "::" [reduce using rule 732 (typedef-name)] $default reduce using rule 693 (template-id)

State 299

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list "(" shift, and go to state 578 "{" shift, and go to state 380 braced-init-list go to state 579

State 300

577 primary-expressionstring-literal $default reduce using rule 577 (primary-expression)

State 301

761 unqualified-idtemplate-id $default reduce using rule 761 (unqualified-id)

State 302

52 assignment-expressionthrow-expression $default reduce using rule 52 (assignment-expression)

State 303

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 563 postfix-expressiontypename-specifier "(" expression-list-opt ")" 565 | typename-specifier braced-init-list "(" shift, and go to state 580 "{" shift, and go to state 380 braced-init-list go to state 581

State 304

129 cast-expressionunary-expression $default reduce using rule 129 (cast-expression)

State 305

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 582 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 306

340 id-expressionunqualified-id $default reduce using rule 340 (id-expression)

State 307

51 assignment-expressionyield-expression $default reduce using rule 51 (assignment-expression)

State 308

228 elaborated-enum-specifier"enum" nested-name-specifier-opt IDENTIFIER $default reduce using rule 228 (elaborated-enum-specifier)

State 309

158 constant-expressionconditional-expression $default reduce using rule 158 (constant-expression)

State 310

266 explicit-specifier"explicit" "(" constant-expression ")" ")" shift, and go to state 583

State 311

156 conditional-expressionlogical-or-expression [",", "...", "=", ";", ")", "]", ":", "{", "}", ">"] 157 | logical-or-expression "?" expression ":" assignment-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "?" shift, and go to state 556 "||" shift, and go to state 557 $default reduce using rule 156 (conditional-expression)

State 312

332 global-module-fragment"module" ";" declaration-seq-opt $default reduce using rule 332 (global-module-fragment)

State 313

432 module-name-qualifierIDENTIFIER "." $default reduce using rule 432 (module-name-qualifier)

State 314

436 module-partition":" module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 584

State 315

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" ";" shift, and go to state 585 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 316

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" ";" shift, and go to state 586 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 317

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." "." shift, and go to state 587

State 318

431 module-namemodule-name-qualifier-opt IDENTIFIER $default reduce using rule 431 (module-name)

State 319

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" ";" shift, and go to state 588 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 320

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 601 qualified-namespace-specifier nested-name-specifier-opt namespace-name 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 589 qualified-namespace-specifier go to state 590 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 321

13 INLINE-opt %empty [IDENTIFIER] 14 | "inline" 235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "inline" shift, and go to state 591 $default reduce using rule 13 (INLINE-opt) INLINE-opt go to state 592

State 322

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" "," shift, and go to state 593 ")" shift, and go to state 594

State 323

264 explicit-instantiationEXTERN-opt "template" declaration $default reduce using rule 264 (explicit-instantiation)

State 324

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" IDENTIFIER shift, and go to state 595 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "{" shift, and go to state 596 alignment-specifier go to state 166 attribute-specifier go to state 167

State 325

351 init-declarator-listinit-declarator-list "," init-declarator 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" "," shift, and go to state 387 ";" shift, and go to state 597

State 326

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-name nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt %empty [":", "{"] 242 | enum-head-name 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 598 enum-head-name-opt go to state 395 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 396 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 327

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 599 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 328

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 600 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 601 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 329

491 noptr-declaratornoptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 591 ptr-declaratornoptr-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" shift, and go to state 347 "[" shift, and go to state 348 "(" [reduce using rule 591 (ptr-declarator)] $default reduce using rule 591 (ptr-declarator) parameters-and-qualifiers go to state 602

State 330

493 noptr-declarator"(" ptr-declarator ")" ")" shift, and go to state 603

State 331

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 594 ptr-operator"&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 594 (ptr-operator)] "[" [reduce using rule 594 (ptr-operator)] $default reduce using rule 594 (ptr-operator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 332

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 string-literal go to state 604

State 333

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 87 attribute-using-prefix "using" attribute-namespace ":" 88 attribute-using-prefix-opt %empty [",", IDENTIFIER, "]"] 89 | attribute-using-prefix "using" shift, and go to state 605 $default reduce using rule 88 (attribute-using-prefix-opt) attribute-using-prefix go to state 606 attribute-using-prefix-opt go to state 607

State 334

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 595 ptr-operator"&&" attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 595 (ptr-operator)] "[" [reduce using rule 595 (ptr-operator)] $default reduce using rule 595 (ptr-operator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 335

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq 593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 178 (cv-qualifier-seq-opt)] "[" [reduce using rule 178 (cv-qualifier-seq-opt)] "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 cv-qualifier go to state 608 cv-qualifier-seq go to state 609 cv-qualifier-seq-opt go to state 610

State 336

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 759 unqualified-id"~" type-name 760 | "~" decltype-specifier IDENTIFIER shift, and go to state 507 "decltype" shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 508 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 509 typedef-name go to state 108

State 337

213 declarator-idELLIPSIS-opt id-expression $default reduce using rule 213 (declarator-id)

State 338

21 TEMPLATE-opt %empty [IDENTIFIER, "operator", "~"] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id IDENTIFIER shift, and go to state 198 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 562

State 339

602 ref-qualifier"&" $default reduce using rule 602 (ref-qualifier)

State 340

603 ref-qualifier"&&" $default reduce using rule 603 (ref-qualifier)

State 341

605 ref-qualifier-optref-qualifier $default reduce using rule 605 (ref-qualifier-opt)

State 342

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "[" shift, and go to state 611

State 343

327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty ["=", ":", "{", "try"] 774 | virt-specifier-seq "final" shift, and go to state 612 "requires" shift, and go to state 381 "override" shift, and go to state 613 $default reduce using rule 773 (virt-specifier-seq-opt) requires-clause go to state 614 virt-specifier go to state 615 virt-specifier-seq go to state 616 virt-specifier-seq-opt go to state 617

State 344

476 nodeclspec-function-declarationattribute-specifier-seq-opt declarator ";" $default reduce using rule 476 (nodeclspec-function-declaration)

State 345

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 490 noptr-declaratordeclarator-id attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 490 (noptr-declarator)] $default reduce using rule 490 (noptr-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 346

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 618

State 347

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 619 parameter-declaration-clause go to state 620 parameter-declaration-list go to state 621 parameter-declaration-list-opt go to state 622

State 348

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 623 constant-expression-opt go to state 624 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 349

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type 491 noptr-declaratornoptr-declarator parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 702 trailing-return-type "->" type-id "->" shift, and go to state 625 $default reduce using rule 491 (noptr-declarator) trailing-return-type go to state 626

State 350

592 ptr-declaratorptr-operator ptr-declarator $default reduce using rule 592 (ptr-declarator)

State 351

36 access-specifier"private" $default reduce using rule 36 (access-specifier)

State 352

37 access-specifier"protected" $default reduce using rule 37 (access-specifier)

State 353

38 access-specifier"public" $default reduce using rule 38 (access-specifier)

State 354

243 enum-key"enum" [IDENTIFIER, "::", "alignas", "[", "decltype"] 244 | "enum" "class" 245 | "enum" "struct" "class" shift, and go to state 131 "struct" shift, and go to state 132 $default reduce using rule 243 (enum-key)

State 355

424 member-specificationaccess-specifier ":" member-specification-opt ":" shift, and go to state 627

State 356

412 member-declarationalias-declaration $default reduce using rule 412 (member-declaration)

State 357

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", ":", "&&", "operator", "decltype", "*", "~"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 191 (decl-specifier-seq-opt)] "alignas" [reduce using rule 191 (decl-specifier-seq-opt)] "[" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 191 (decl-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 539 decl-specifier-seq-opt go to state 628 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 358

411 member-declarationdeduction-guide $default reduce using rule 411 (member-declaration)

State 359

414 member-declarationempty-declaration $default reduce using rule 414 (member-declaration)

State 360

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 629

State 361

410 member-declarationexplicit-specialization $default reduce using rule 410 (member-declaration)

State 362

269 explicit-specifier-optexplicit-specifier $default reduce using rule 269 (explicit-specifier-opt)

State 363

405 member-declarationfunction-definition $default reduce using rule 405 (member-declaration)

State 364

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 423 | member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 351 "protected" shift, and go to state 352 "public" shift, and go to state 353 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 354 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 355 alias-declaration go to state 356 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 357 deduction-guide go to state 358 empty-declaration go to state 359 enum-key go to state 360 explicit-specialization go to state 361 explicit-specifier go to state 362 explicit-specifier-opt go to state 76 function-definition go to state 363 member-declaration go to state 364 member-specification go to state 365 member-specification-opt go to state 630 opaque-enum-declaration go to state 367 static_assert-declaration go to state 368 template-declaration go to state 369 template-head go to state 101 using-declaration go to state 370 using-enum-declaration go to state 371

State 365

426 member-specification-optmember-specification $default reduce using rule 426 (member-specification-opt)

State 366

142 class-specifierclass-head "{" member-specification-opt "}" "}" shift, and go to state 631

State 367

413 member-declarationopaque-enum-declaration $default reduce using rule 413 (member-declaration)

State 368

408 member-declarationstatic_assert-declaration $default reduce using rule 408 (member-declaration)

State 369

409 member-declarationtemplate-declaration $default reduce using rule 409 (member-declaration)

State 370

406 member-declarationusing-declaration $default reduce using rule 406 (member-declaration)

State 371

407 member-declarationusing-enum-declaration $default reduce using rule 407 (member-declaration)

State 372

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 99 base-clause":" base-specifier-list 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-list base-specifier ELLIPSIS-opt 106 | base-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 632 base-specifier go to state 633 base-specifier-list go to state 634

State 373

101 base-clause-optbase-clause $default reduce using rule 101 (base-clause-opt)

State 374

132 class-headclass-key attribute-specifier-seq-opt base-clause-opt $default reduce using rule 132 (class-head)

State 375

131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 143 class-virt-specifier "final" 144 class-virt-specifier-opt %empty [":", "{"] 145 | class-virt-specifier "final" shift, and go to state 635 $default reduce using rule 144 (class-virt-specifier-opt) class-virt-specifier go to state 636 class-virt-specifier-opt go to state 637

State 376

133 class-head-namenested-name-specifier-opt class-name 137 class-name IDENTIFIER 138 | simple-template-id 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 638 class-name go to state 639 simple-template-id go to state 640 template-name go to state 102

State 377

231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 641 template-name go to state 102

State 378

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 116 brace-or-equal-initializer"=" initializer-clause 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 644 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 379

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 360 initializer"(" expression-list ")" 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 645 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 380

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 120 | "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 224 designated-initializer-clause designator brace-or-equal-initializer 225 designated-initializer-list designated-initializer-clause 226 | designated-initializer-list "," designated-initializer-clause 227 designator "." IDENTIFIER 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "}" shift, and go to state 648 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "." shift, and go to state 649 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 designated-initializer-clause go to state 650 designated-initializer-list go to state 651 designator go to state 652 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 653 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 381

137 class-name IDENTIFIER 138 | simple-template-id 162 constraint-logical-and-expression primary-expression 163 | constraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expression constraint-logical-and-expression 165 | constraint-logical-or-expression "||" constraint-logical-and-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 621 requires-clause"requires" constraint-logical-or-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 654 "[" shift, and go to state 247 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "requires" shift, and go to state 251 "~" shift, and go to state 336 "literal" shift, and go to state 260 STRING_LITERAL shift, and go to state 118 class-name go to state 55 constraint-logical-and-expression go to state 655 constraint-logical-or-expression go to state 656 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 primary-expression go to state 657 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 382

359 initializerbrace-or-equal-initializer $default reduce using rule 359 (initializer)

State 383

117 brace-or-equal-initializerbraced-init-list $default reduce using rule 117 (brace-or-equal-initializer)

State 384

366 initializer-optinitializer $default reduce using rule 366 (initializer-opt)

State 385

348 init-declaratordeclarator initializer-opt $default reduce using rule 348 (init-declarator)

State 386

349 init-declaratordeclarator requires-clause $default reduce using rule 349 (init-declarator)

State 387

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 348 init-declarator declarator initializer-opt 349 | declarator requires-clause 351 init-declarator-listinit-declarator-list "," init-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 183 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 init-declarator go to state 658 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 388

640 simple-declarationdecl-specifier-seq init-declarator-list-opt ";" $default reduce using rule 640 (simple-declaration)

State 389

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 249 enumeratorIDENTIFIER attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 659

State 390

250 enumerator-definitionenumerator [",", "}"] 251 | enumerator "=" constant-expression "=" shift, and go to state 660 $default reduce using rule 250 (enumerator-definition)

State 391

252 enumerator-listenumerator-definition $default reduce using rule 252 (enumerator-list)

State 392

248 enum-specifierenum-head "{" enumerator-list "," "}" 253 enumerator-listenumerator-list "," enumerator-definition 255 enumerator-list-optenumerator-list ["}"] "," shift, and go to state 661 $default reduce using rule 255 (enumerator-list-opt)

State 393

247 enum-specifierenum-head "{" enumerator-list-opt "}" "}" shift, and go to state 662

State 394

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty [";"] 238 | enum-base 242 enum-head-name-optenum-head-name [":", "{"] 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 663 ":" [reduce using rule 242 (enum-head-name-opt)] "{" reduce using rule 242 (enum-head-name-opt) $default reduce using rule 237 (enum-base-opt) enum-base go to state 664 enum-base-opt go to state 665

State 395

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty ["{"] 238 | enum-base 239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt ":" shift, and go to state 663 $default reduce using rule 237 (enum-base-opt) enum-base go to state 664 enum-base-opt go to state 666

State 396

240 enum-head-namenested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 667

State 397

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 619 parameter-declaration-clause go to state 668 parameter-declaration-list go to state 621 parameter-declaration-list-opt go to state 622

State 398

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 431 module-name module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier IDENTIFIER "." 433 | module-name-qualifier IDENTIFIER "." 434 module-name-qualifier-opt %empty [IDENTIFIER] 435 | module-name-qualifier IDENTIFIER shift, and go to state 137 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name go to state 669 module-name-qualifier go to state 142 module-name-qualifier-opt go to state 143

State 399

584 private-module-fragment "module" ":" "private" ";" declaration-seq-opt 585 private-module-fragment-opt %empty [$end] 586 | private-module-fragment 706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt "module" shift, and go to state 670 $default reduce using rule 585 (private-module-fragment-opt) private-module-fragment go to state 671 private-module-fragment-opt go to state 672

State 400

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" $default reduce using rule 456 (nested-name-specifier)

State 401

646 simple-type-specifiernested-name-specifier "template" simple-template-id $default reduce using rule 646 (simple-type-specifier)

State 402

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 673

State 403

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 410 template-argument-list go to state 411 template-argument-list-opt go to state 674 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 404

151 concept-nameIDENTIFIER $default reduce using rule 151 (concept-name)

State 405

150 concept-definition"concept" concept-name "=" constraint-expression ";" "=" shift, and go to state 675

State 406

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "alignas", "[", "decltype"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 676 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 179 simple-template-id go to state 180 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 407

683 template-argumentconstant-expression $default reduce using rule 683 (template-argument)

State 408

580 primary-expressionid-expression [",", "...", "+", "-", "(", "&", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] 685 template-argumentid-expression [",", "...", ">"] "," reduce using rule 580 (primary-expression) "," [reduce using rule 685 (template-argument)] "..." reduce using rule 580 (primary-expression) "..." [reduce using rule 685 (template-argument)] ">" reduce using rule 580 (primary-expression) ">" [reduce using rule 685 (template-argument)] $default reduce using rule 580 (primary-expression)

State 409

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 725 type-specifiersimple-type-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 578 "{" shift, and go to state 380 "(" [reduce using rule 725 (type-specifier)] $default reduce using rule 725 (type-specifier) braced-init-list go to state 579

State 410

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 686 template-argument-listtemplate-argument ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 677

State 411

687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 689 template-argument-list-opttemplate-argument-list [">"] "," shift, and go to state 678 $default reduce using rule 689 (template-argument-list-opt)

State 412

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" ">" shift, and go to state 679

State 413

684 template-argumenttype-id $default reduce using rule 684 (template-argument)

State 414

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 84 | attribute-specifier-seq 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 729 | type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 680 class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 681 typedef-name go to state 108 typename-specifier go to state 109

State 415

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 712 type-idtype-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 682 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 683 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 32 (abstract-declarator-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 684 abstract-declarator-opt go to state 685 abstract-pack-declarator go to state 686 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 688 noptr-abstract-pack-declarator go to state 689 ptr-abstract-declarator go to state 690 ptr-operator go to state 691 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 416

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 563 postfix-expressiontypename-specifier "(" expression-list-opt ")" 565 | typename-specifier braced-init-list 727 type-specifiertypename-specifier [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", ")", "&", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", ">", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] "(" shift, and go to state 580 "{" shift, and go to state 380 "(" [reduce using rule 727 (type-specifier)] $default reduce using rule 727 (type-specifier) braced-init-list go to state 581

State 417

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" "auto" shift, and go to state 692

State 418

271 export-declaration"export" "{" declaration-seq-opt "}" $default reduce using rule 271 (export-declaration)

State 419

390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" "}" shift, and go to state 693

State 420

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 692 | "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 225 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 421

265 explicit-specialization"template" "<" ">" declaration $default reduce using rule 265 (explicit-specialization)

State 422

24 THIS-opt"this" $default reduce using rule 24 (THIS-opt)

State 423

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 694 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 424

5 ELLIPSIS-opt %empty [",", IDENTIFIER, ">"] 6 | "..." 11 IDENTIFIER-opt %empty ["="] 12 | IDENTIFIER 720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression "..." shift, and go to state 156 IDENTIFIER shift, and go to state 427 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "=" reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 695 IDENTIFIER-opt go to state 696

State 425

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 700 template-parameter-listtemplate-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 697 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 426

621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["constexpr", "...", "export", "extern", IDENTIFIER, "inline", "::", "template", "typename", "virtual", "using", ";", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] 623 | requires-clause 692 template-head"template" "<" template-parameter-list ">" requires-clause-opt "requires" shift, and go to state 381 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 698 requires-clause-opt go to state 699

State 427

12 IDENTIFIER-optIDENTIFIER $default reduce using rule 12 (IDENTIFIER-opt)

State 428

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 427 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 700

State 429

719 type-parametertype-constraint IDENTIFIER-opt "=" type-id "=" shift, and go to state 701

State 430

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 427 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 702

State 431

717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id "=" shift, and go to state 703

State 432

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 734 typename-specifier"typename" nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 673 "::" [reduce using rule 734 (typename-specifier)] $default reduce using rule 734 (typename-specifier)

State 433

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 216 defining-type-id defining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-id go to state 704 defining-type-specifier go to state 705 defining-type-specifier-seq go to state 706 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 434

456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 696 template-nameIDENTIFIER ["<"] 755 unqualified-idIDENTIFIER [",", "...", ";"] "::" shift, and go to state 400 "<" reduce using rule 696 (template-name) $default reduce using rule 755 (unqualified-id)

State 435

693 template-idsimple-template-id $default reduce using rule 693 (template-id)

State 436

764 using-declaratorTYPENAME-opt nested-name-specifier unqualified-id $default reduce using rule 764 (using-declarator)

State 437

5 ELLIPSIS-opt %empty [",", ";"] 6 | "..." 766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 707

State 438

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 477 | "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 708 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 439

286 fold-expression"(" "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" "," shift, and go to state 709 "+" shift, and go to state 710 "-" shift, and go to state 711 "=" shift, and go to state 712 "&" shift, and go to state 713 "*=" shift, and go to state 714 "/=" shift, and go to state 715 "%=" shift, and go to state 716 "+=" shift, and go to state 717 "-=" shift, and go to state 718 ">>=" shift, and go to state 719 "<<=" shift, and go to state 720 "&=" shift, and go to state 721 "^=" shift, and go to state 722 "|=" shift, and go to state 723 "&&" shift, and go to state 724 "||" shift, and go to state 725 "==" shift, and go to state 726 "!=" shift, and go to state 727 "^" shift, and go to state 728 "<" shift, and go to state 729 ">" shift, and go to state 730 "*" shift, and go to state 731 "/" shift, and go to state 732 "%" shift, and go to state 733 "|" shift, and go to state 734 "<<" shift, and go to state 735 ">>" shift, and go to state 736 "<=" shift, and go to state 737 ">=" shift, and go to state 738 ".*" shift, and go to state 739 "->*" shift, and go to state 740 fold-operator go to state 741

State 440

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" 556 pm-expressioncast-expression [",", "+", "-", "=", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "," shift, and go to state 709 "+" shift, and go to state 710 "-" shift, and go to state 711 "=" shift, and go to state 712 "&" shift, and go to state 713 "*=" shift, and go to state 714 "/=" shift, and go to state 715 "%=" shift, and go to state 716 "+=" shift, and go to state 717 "-=" shift, and go to state 718 ">>=" shift, and go to state 719 "<<=" shift, and go to state 720 "&=" shift, and go to state 721 "^=" shift, and go to state 722 "|=" shift, and go to state 723 "&&" shift, and go to state 724 "||" shift, and go to state 725 "==" shift, and go to state 726 "!=" shift, and go to state 727 "^" shift, and go to state 728 "<" shift, and go to state 729 ">" shift, and go to state 730 "*" shift, and go to state 731 "/" shift, and go to state 732 "%" shift, and go to state 733 "|" shift, and go to state 734 "<<" shift, and go to state 735 ">>" shift, and go to state 736 "<=" shift, and go to state 737 ">=" shift, and go to state 738 ".*" shift, and go to state 739 "->*" shift, and go to state 740 "," [reduce using rule 556 (pm-expression)] "+" [reduce using rule 556 (pm-expression)] "-" [reduce using rule 556 (pm-expression)] "=" [reduce using rule 556 (pm-expression)] "&" [reduce using rule 556 (pm-expression)] "*=" [reduce using rule 556 (pm-expression)] "/=" [reduce using rule 556 (pm-expression)] "%=" [reduce using rule 556 (pm-expression)] "+=" [reduce using rule 556 (pm-expression)] "-=" [reduce using rule 556 (pm-expression)] ">>=" [reduce using rule 556 (pm-expression)] "<<=" [reduce using rule 556 (pm-expression)] "&=" [reduce using rule 556 (pm-expression)] "^=" [reduce using rule 556 (pm-expression)] "|=" [reduce using rule 556 (pm-expression)] "&&" [reduce using rule 556 (pm-expression)] "||" [reduce using rule 556 (pm-expression)] "==" [reduce using rule 556 (pm-expression)] "!=" [reduce using rule 556 (pm-expression)] "^" [reduce using rule 556 (pm-expression)] "<" [reduce using rule 556 (pm-expression)] ">" [reduce using rule 556 (pm-expression)] "*" [reduce using rule 556 (pm-expression)] "/" [reduce using rule 556 (pm-expression)] "%" [reduce using rule 556 (pm-expression)] "|" [reduce using rule 556 (pm-expression)] "<<" [reduce using rule 556 (pm-expression)] ">>" [reduce using rule 556 (pm-expression)] "<=" [reduce using rule 556 (pm-expression)] ">=" [reduce using rule 556 (pm-expression)] ".*" [reduce using rule 556 (pm-expression)] "->*" [reduce using rule 556 (pm-expression)] $default reduce using rule 556 (pm-expression) fold-operator go to state 742

State 441

278 expressionexpression "," assignment-expression 579 primary-expression"(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 743

State 442

130 cast-expression"(" type-id ")" cast-expression ")" shift, and go to state 744

State 443

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 636 simple-captureIDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 745

State 444

638 simple-capture"this" $default reduce using rule 638 (simple-capture)

State 445

126 capture-default"=" $default reduce using rule 126 (capture-default)

State 446

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 125 capture-default"&" [",", "]"] 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 IDENTIFIER shift, and go to state 746 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 125 (capture-default) ELLIPSIS-opt go to state 747

State 447

639 simple-capture"*" "this" "this" shift, and go to state 748

State 448

346 init-captureELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 749

State 449

127 capture-listcapture $default reduce using rule 127 (capture-list)

State 450

379 lambda-capturecapture-default ["]"] 381 | capture-default "," capture-list "," shift, and go to state 750 $default reduce using rule 379 (lambda-capture)

State 451

128 capture-listcapture-list "," capture 380 lambda-capturecapture-list ["]"] "," shift, and go to state 751 $default reduce using rule 380 (lambda-capture)

State 452

124 captureinit-capture $default reduce using rule 124 (capture)

State 453

383 lambda-capture-optlambda-capture $default reduce using rule 383 (lambda-capture-opt)

State 454

388 lambda-introducer"[" lambda-capture-opt "]" "]" shift, and go to state 752

State 455

123 capturesimple-capture $default reduce using rule 123 (capture)

State 456

90 await-expression"co_await" cast-expression $default reduce using rule 90 (await-expression)

State 457

542 overloadable-operator"," $default reduce using rule 542 (overloadable-operator)

State 458

509 overloadable-operator"!" $default reduce using rule 509 (overloadable-operator)

State 459

510 overloadable-operator"+" $default reduce using rule 510 (overloadable-operator)

State 460

511 overloadable-operator"-" $default reduce using rule 511 (overloadable-operator)

State 461

518 overloadable-operator"=" $default reduce using rule 518 (overloadable-operator)

State 462

504 overloadable-operator"(" ")" ")" shift, and go to state 753

State 463

516 overloadable-operator"&" $default reduce using rule 516 (overloadable-operator)

State 464

521 overloadable-operator"*=" $default reduce using rule 521 (overloadable-operator)

State 465

522 overloadable-operator"/=" $default reduce using rule 522 (overloadable-operator)

State 466

523 overloadable-operator"%=" $default reduce using rule 523 (overloadable-operator)

State 467

519 overloadable-operator"+=" $default reduce using rule 519 (overloadable-operator)

State 468

520 overloadable-operator"-=" $default reduce using rule 520 (overloadable-operator)

State 469

539 overloadable-operator">>=" $default reduce using rule 539 (overloadable-operator)

State 470

538 overloadable-operator"<<=" $default reduce using rule 538 (overloadable-operator)

State 471

525 overloadable-operator"&=" $default reduce using rule 525 (overloadable-operator)

State 472

524 overloadable-operator"^=" $default reduce using rule 524 (overloadable-operator)

State 473

526 overloadable-operator"|=" $default reduce using rule 526 (overloadable-operator)

State 474

505 overloadable-operator"[" "]" "]" shift, and go to state 754

State 475

503 overloadable-operator"co_await" $default reduce using rule 503 (overloadable-operator)

State 476

533 overloadable-operator"<=>" $default reduce using rule 533 (overloadable-operator)

State 477

534 overloadable-operator"&&" $default reduce using rule 534 (overloadable-operator)

State 478

535 overloadable-operator"||" $default reduce using rule 535 (overloadable-operator)

State 479

506 overloadable-operator"->" $default reduce using rule 506 (overloadable-operator)

State 480

500 overloadable-operator"delete" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 502 | "delete" "[" "]" "[" shift, and go to state 755 "[" [reduce using rule 500 (overloadable-operator)] $default reduce using rule 500 (overloadable-operator)

State 481

527 overloadable-operator"==" $default reduce using rule 527 (overloadable-operator)

State 482

528 overloadable-operator"!=" $default reduce using rule 528 (overloadable-operator)

State 483

515 overloadable-operator"^" $default reduce using rule 515 (overloadable-operator)

State 484

529 overloadable-operator"<" $default reduce using rule 529 (overloadable-operator)

State 485

530 overloadable-operator">" $default reduce using rule 530 (overloadable-operator)

State 486

512 overloadable-operator"*" $default reduce using rule 512 (overloadable-operator)

State 487

513 overloadable-operator"/" $default reduce using rule 513 (overloadable-operator)

State 488

514 overloadable-operator"%" $default reduce using rule 514 (overloadable-operator)

State 489

517 overloadable-operator"|" $default reduce using rule 517 (overloadable-operator)

State 490

536 overloadable-operator"<<" $default reduce using rule 536 (overloadable-operator)

State 491

537 overloadable-operator">>" $default reduce using rule 537 (overloadable-operator)

State 492

531 overloadable-operator"<=" $default reduce using rule 531 (overloadable-operator)

State 493

532 overloadable-operator">=" $default reduce using rule 532 (overloadable-operator)

State 494

507 overloadable-operator"->*" $default reduce using rule 507 (overloadable-operator)

State 495

499 overloadable-operator"new" [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 501 | "new" "[" "]" "[" shift, and go to state 756 "[" [reduce using rule 499 (overloadable-operator)] $default reduce using rule 499 (overloadable-operator)

State 496

508 overloadable-operator"~" $default reduce using rule 508 (overloadable-operator)

State 497

540 overloadable-operator"++" $default reduce using rule 540 (overloadable-operator)

State 498

541 overloadable-operator"--" $default reduce using rule 541 (overloadable-operator)

State 499

169 conversion-function-id"operator" conversion-type-id $default reduce using rule 169 (conversion-function-id)

State 500

497 operator-function-id"operator" overloadable-operator [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" "<" shift, and go to state 757 "<" [reduce using rule 497 (operator-function-id)] $default reduce using rule 497 (operator-function-id)

State 501

392 literal-operator-id"operator" string-literal IDENTIFIER 735 ud-suffix IDENTIFIER 762 user-defined-string-literalstring-literal ud-suffix IDENTIFIER shift, and go to state 758 ud-suffix go to state 759

State 502

137 class-name IDENTIFIER 138 | simple-template-id 166 conversion-declarator ptr-operator conversion-declarator-opt 167 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 168 | conversion-declarator 170 conversion-type-idtype-specifier-seq conversion-declarator-opt 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] "::" [reduce using rule 167 (conversion-declarator-opt)] "&" [reduce using rule 167 (conversion-declarator-opt)] "&&" [reduce using rule 167 (conversion-declarator-opt)] "decltype" [reduce using rule 167 (conversion-declarator-opt)] "*" [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 760 conversion-declarator-opt go to state 761 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 ptr-operator go to state 762 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 503

393 literal-operator-id"operator" user-defined-string-literal $default reduce using rule 393 (literal-operator-id)

State 504

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 616 requirement-parameter-list"(" parameter-declaration-clause ")" "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 619 parameter-declaration-clause go to state 763 parameter-declaration-list go to state 621 parameter-declaration-list-opt go to state 622

State 505

618 requirement-parameter-list-optrequirement-parameter-list $default reduce using rule 618 (requirement-parameter-list-opt)

State 506

615 requirement-body "{" requirement-seq "}" 624 requires-expression"requires" requirement-parameter-list-opt requirement-body "{" shift, and go to state 764 requirement-body go to state 765

State 507

137 class-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 246 enum-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 137 (class-name) "," [reduce using rule 246 (enum-name)] "," [reduce using rule 731 (typedef-name)] "constexpr" reduce using rule 137 (class-name) "constexpr" [reduce using rule 246 (enum-name)] "constexpr" [reduce using rule 731 (typedef-name)] "..." reduce using rule 137 (class-name) "..." [reduce using rule 246 (enum-name)] "..." [reduce using rule 731 (typedef-name)] "export" reduce using rule 137 (class-name) "export" [reduce using rule 246 (enum-name)] "export" [reduce using rule 731 (typedef-name)] "extern" reduce using rule 137 (class-name) "extern" [reduce using rule 246 (enum-name)] "extern" [reduce using rule 731 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 731 (typedef-name)] "inline" reduce using rule 137 (class-name) "inline" [reduce using rule 246 (enum-name)] "inline" [reduce using rule 731 (typedef-name)] "noexcept" reduce using rule 137 (class-name) "noexcept" [reduce using rule 246 (enum-name)] "noexcept" [reduce using rule 731 (typedef-name)] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 731 (typedef-name)] "template" reduce using rule 137 (class-name) "template" [reduce using rule 246 (enum-name)] "template" [reduce using rule 731 (typedef-name)] "typename" reduce using rule 137 (class-name) "typename" [reduce using rule 246 (enum-name)] "typename" [reduce using rule 731 (typedef-name)] "virtual" reduce using rule 137 (class-name) "virtual" [reduce using rule 246 (enum-name)] "virtual" [reduce using rule 731 (typedef-name)] "+" reduce using rule 137 (class-name) "+" [reduce using rule 246 (enum-name)] "+" [reduce using rule 731 (typedef-name)] "-" reduce using rule 137 (class-name) "-" [reduce using rule 246 (enum-name)] "-" [reduce using rule 731 (typedef-name)] "using" reduce using rule 137 (class-name) "using" [reduce using rule 246 (enum-name)] "using" [reduce using rule 731 (typedef-name)] "=" reduce using rule 137 (class-name) "=" [reduce using rule 246 (enum-name)] "=" [reduce using rule 731 (typedef-name)] ";" reduce using rule 137 (class-name) ";" [reduce using rule 246 (enum-name)] ";" [reduce using rule 731 (typedef-name)] "alignas" reduce using rule 137 (class-name) "alignas" [reduce using rule 246 (enum-name)] "alignas" [reduce using rule 731 (typedef-name)] "(" reduce using rule 137 (class-name) "(" [reduce using rule 246 (enum-name)] "(" [reduce using rule 731 (typedef-name)] ")" reduce using rule 137 (class-name) ")" [reduce using rule 246 (enum-name)] ")" [reduce using rule 731 (typedef-name)] "&" reduce using rule 137 (class-name) "&" [reduce using rule 246 (enum-name)] "&" [reduce using rule 731 (typedef-name)] "asm" reduce using rule 137 (class-name) "asm" [reduce using rule 246 (enum-name)] "asm" [reduce using rule 731 (typedef-name)] "*=" reduce using rule 137 (class-name) "*=" [reduce using rule 246 (enum-name)] "*=" [reduce using rule 731 (typedef-name)] "/=" reduce using rule 137 (class-name) "/=" [reduce using rule 246 (enum-name)] "/=" [reduce using rule 731 (typedef-name)] "%=" reduce using rule 137 (class-name) "%=" [reduce using rule 246 (enum-name)] "%=" [reduce using rule 731 (typedef-name)] "+=" reduce using rule 137 (class-name) "+=" [reduce using rule 246 (enum-name)] "+=" [reduce using rule 731 (typedef-name)] "-=" reduce using rule 137 (class-name) "-=" [reduce using rule 246 (enum-name)] "-=" [reduce using rule 731 (typedef-name)] ">>=" reduce using rule 137 (class-name) ">>=" [reduce using rule 246 (enum-name)] ">>=" [reduce using rule 731 (typedef-name)] "<<=" reduce using rule 137 (class-name) "<<=" [reduce using rule 246 (enum-name)] "<<=" [reduce using rule 731 (typedef-name)] "&=" reduce using rule 137 (class-name) "&=" [reduce using rule 246 (enum-name)] "&=" [reduce using rule 731 (typedef-name)] "^=" reduce using rule 137 (class-name) "^=" [reduce using rule 246 (enum-name)] "^=" [reduce using rule 731 (typedef-name)] "|=" reduce using rule 137 (class-name) "|=" [reduce using rule 246 (enum-name)] "|=" [reduce using rule 731 (typedef-name)] "[" reduce using rule 137 (class-name) "[" [reduce using rule 246 (enum-name)] "[" [reduce using rule 731 (typedef-name)] "]" reduce using rule 137 (class-name) "]" [reduce using rule 246 (enum-name)] "]" [reduce using rule 731 (typedef-name)] ":" reduce using rule 137 (class-name) ":" [reduce using rule 246 (enum-name)] ":" [reduce using rule 731 (typedef-name)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 246 (enum-name)] "{" [reduce using rule 731 (typedef-name)] "}" reduce using rule 137 (class-name) "}" [reduce using rule 246 (enum-name)] "}" [reduce using rule 731 (typedef-name)] "class" reduce using rule 137 (class-name) "class" [reduce using rule 246 (enum-name)] "class" [reduce using rule 731 (typedef-name)] "struct" reduce using rule 137 (class-name) "struct" [reduce using rule 246 (enum-name)] "struct" [reduce using rule 731 (typedef-name)] "union" reduce using rule 137 (class-name) "union" [reduce using rule 246 (enum-name)] "union" [reduce using rule 731 (typedef-name)] "final" reduce using rule 137 (class-name) "final" [reduce using rule 246 (enum-name)] "final" [reduce using rule 731 (typedef-name)] "<=>" reduce using rule 137 (class-name) "<=>" [reduce using rule 246 (enum-name)] "<=>" [reduce using rule 731 (typedef-name)] "concept" reduce using rule 137 (class-name) "concept" [reduce using rule 246 (enum-name)] "concept" [reduce using rule 731 (typedef-name)] "?" reduce using rule 137 (class-name) "?" [reduce using rule 246 (enum-name)] "?" [reduce using rule 731 (typedef-name)] "&&" reduce using rule 137 (class-name) "&&" [reduce using rule 246 (enum-name)] "&&" [reduce using rule 731 (typedef-name)] "||" reduce using rule 137 (class-name) "||" [reduce using rule 246 (enum-name)] "||" [reduce using rule 731 (typedef-name)] "operator" reduce using rule 137 (class-name) "operator" [reduce using rule 246 (enum-name)] "operator" [reduce using rule 731 (typedef-name)] "const" reduce using rule 137 (class-name) "const" [reduce using rule 246 (enum-name)] "const" [reduce using rule 731 (typedef-name)] "volatile" reduce using rule 137 (class-name) "volatile" [reduce using rule 246 (enum-name)] "volatile" [reduce using rule 731 (typedef-name)] "friend" reduce using rule 137 (class-name) "friend" [reduce using rule 246 (enum-name)] "friend" [reduce using rule 731 (typedef-name)] "typedef" reduce using rule 137 (class-name) "typedef" [reduce using rule 246 (enum-name)] "typedef" [reduce using rule 731 (typedef-name)] "consteval" reduce using rule 137 (class-name) "consteval" [reduce using rule 246 (enum-name)] "consteval" [reduce using rule 731 (typedef-name)] "constinit" reduce using rule 137 (class-name) "constinit" [reduce using rule 246 (enum-name)] "constinit" [reduce using rule 731 (typedef-name)] "decltype" reduce using rule 137 (class-name) "decltype" [reduce using rule 246 (enum-name)] "decltype" [reduce using rule 731 (typedef-name)] "->" reduce using rule 137 (class-name) "->" [reduce using rule 246 (enum-name)] "->" [reduce using rule 731 (typedef-name)] "." reduce using rule 137 (class-name) "." [reduce using rule 246 (enum-name)] "." [reduce using rule 731 (typedef-name)] "enum" reduce using rule 137 (class-name) "enum" [reduce using rule 246 (enum-name)] "enum" [reduce using rule 731 (typedef-name)] "==" reduce using rule 137 (class-name) "==" [reduce using rule 246 (enum-name)] "==" [reduce using rule 731 (typedef-name)] "!=" reduce using rule 137 (class-name) "!=" [reduce using rule 246 (enum-name)] "!=" [reduce using rule 731 (typedef-name)] "^" reduce using rule 137 (class-name) "^" [reduce using rule 246 (enum-name)] "^" [reduce using rule 731 (typedef-name)] "<" reduce using rule 137 (class-name) "<" [reduce using rule 246 (enum-name)] "<" [reduce using rule 696 (template-name)] "<" [reduce using rule 731 (typedef-name)] ">" reduce using rule 137 (class-name) ">" [reduce using rule 246 (enum-name)] ">" [reduce using rule 731 (typedef-name)] "explicit" reduce using rule 137 (class-name) "explicit" [reduce using rule 246 (enum-name)] "explicit" [reduce using rule 731 (typedef-name)] "*" reduce using rule 137 (class-name) "*" [reduce using rule 246 (enum-name)] "*" [reduce using rule 731 (typedef-name)] "/" reduce using rule 137 (class-name) "/" [reduce using rule 246 (enum-name)] "/" [reduce using rule 731 (typedef-name)] "%" reduce using rule 137 (class-name) "%" [reduce using rule 246 (enum-name)] "%" [reduce using rule 731 (typedef-name)] "|" reduce using rule 137 (class-name) "|" [reduce using rule 246 (enum-name)] "|" [reduce using rule 731 (typedef-name)] "<<" reduce using rule 137 (class-name) "<<" [reduce using rule 246 (enum-name)] "<<" [reduce using rule 731 (typedef-name)] ">>" reduce using rule 137 (class-name) ">>" [reduce using rule 246 (enum-name)] ">>" [reduce using rule 731 (typedef-name)] "<=" reduce using rule 137 (class-name) "<=" [reduce using rule 246 (enum-name)] "<=" [reduce using rule 731 (typedef-name)] ">=" reduce using rule 137 (class-name) ">=" [reduce using rule 246 (enum-name)] ">=" [reduce using rule 731 (typedef-name)] ".*" reduce using rule 137 (class-name) ".*" [reduce using rule 246 (enum-name)] ".*" [reduce using rule 731 (typedef-name)] "->*" reduce using rule 137 (class-name) "->*" [reduce using rule 246 (enum-name)] "->*" [reduce using rule 731 (typedef-name)] "try" reduce using rule 137 (class-name) "try" [reduce using rule 246 (enum-name)] "try" [reduce using rule 731 (typedef-name)] "import" reduce using rule 137 (class-name) "import" [reduce using rule 246 (enum-name)] "import" [reduce using rule 731 (typedef-name)] "namespace" reduce using rule 137 (class-name) "namespace" [reduce using rule 246 (enum-name)] "namespace" [reduce using rule 731 (typedef-name)] "requires" reduce using rule 137 (class-name) "requires" [reduce using rule 246 (enum-name)] "requires" [reduce using rule 731 (typedef-name)] "~" reduce using rule 137 (class-name) "~" [reduce using rule 246 (enum-name)] "~" [reduce using rule 731 (typedef-name)] "++" reduce using rule 137 (class-name) "++" [reduce using rule 246 (enum-name)] "++" [reduce using rule 731 (typedef-name)] "--" reduce using rule 137 (class-name) "--" [reduce using rule 246 (enum-name)] "--" [reduce using rule 731 (typedef-name)] "auto" reduce using rule 137 (class-name) "auto" [reduce using rule 246 (enum-name)] "auto" [reduce using rule 731 (typedef-name)] "char" reduce using rule 137 (class-name) "char" [reduce using rule 246 (enum-name)] "char" [reduce using rule 731 (typedef-name)] "char8_t" reduce using rule 137 (class-name) "char8_t" [reduce using rule 246 (enum-name)] "char8_t" [reduce using rule 731 (typedef-name)] "char16_t" reduce using rule 137 (class-name) "char16_t" [reduce using rule 246 (enum-name)] "char16_t" [reduce using rule 731 (typedef-name)] "char32_t" reduce using rule 137 (class-name) "char32_t" [reduce using rule 246 (enum-name)] "char32_t" [reduce using rule 731 (typedef-name)] "wchar_t" reduce using rule 137 (class-name) "wchar_t" [reduce using rule 246 (enum-name)] "wchar_t" [reduce using rule 731 (typedef-name)] "bool" reduce using rule 137 (class-name) "bool" [reduce using rule 246 (enum-name)] "bool" [reduce using rule 731 (typedef-name)] "short" reduce using rule 137 (class-name) "short" [reduce using rule 246 (enum-name)] "short" [reduce using rule 731 (typedef-name)] "int" reduce using rule 137 (class-name) "int" [reduce using rule 246 (enum-name)] "int" [reduce using rule 731 (typedef-name)] "long" reduce using rule 137 (class-name) "long" [reduce using rule 246 (enum-name)] "long" [reduce using rule 731 (typedef-name)] "signed" reduce using rule 137 (class-name) "signed" [reduce using rule 246 (enum-name)] "signed" [reduce using rule 731 (typedef-name)] "unsigned" reduce using rule 137 (class-name) "unsigned" [reduce using rule 246 (enum-name)] "unsigned" [reduce using rule 731 (typedef-name)] "float" reduce using rule 137 (class-name) "float" [reduce using rule 246 (enum-name)] "float" [reduce using rule 731 (typedef-name)] "double" reduce using rule 137 (class-name) "double" [reduce using rule 246 (enum-name)] "double" [reduce using rule 731 (typedef-name)] "void" reduce using rule 137 (class-name) "void" [reduce using rule 246 (enum-name)] "void" [reduce using rule 731 (typedef-name)] "static_assert" reduce using rule 137 (class-name) "static_assert" [reduce using rule 246 (enum-name)] "static_assert" [reduce using rule 731 (typedef-name)] "static" reduce using rule 137 (class-name) "static" [reduce using rule 246 (enum-name)] "static" [reduce using rule 731 (typedef-name)] "thread_local" reduce using rule 137 (class-name) "thread_local" [reduce using rule 246 (enum-name)] "thread_local" [reduce using rule 731 (typedef-name)] "mutable" reduce using rule 137 (class-name) "mutable" [reduce using rule 246 (enum-name)] "mutable" [reduce using rule 731 (typedef-name)] "override" reduce using rule 137 (class-name) "override" [reduce using rule 246 (enum-name)] "override" [reduce using rule 731 (typedef-name)] $default reduce using rule 137 (class-name)

State 508

760 unqualified-id"~" decltype-specifier $default reduce using rule 760 (unqualified-id)

State 509

759 unqualified-id"~" type-name $default reduce using rule 759 (unqualified-id)

State 510

738 unary-expression"++" cast-expression $default reduce using rule 738 (unary-expression)

State 511

739 unary-expression"--" cast-expression $default reduce using rule 739 (unary-expression)

State 512

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 766 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 513

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 767 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 514

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 768 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 515

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 769 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 516

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 770 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 771 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 517

55 assignment-expression-optassignment-expression $default reduce using rule 55 (assignment-expression-opt)

State 518

701 throw-expression"throw" assignment-expression-opt $default reduce using rule 701 (throw-expression)

State 519

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" "(" shift, and go to state 772

State 520

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 439 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 440 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 441 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 773 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 521

741 unary-expression"sizeof" unary-expression $default reduce using rule 741 (unary-expression)

State 522

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 744 unary-expression"alignof" "(" type-id ")" IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 774 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 523

775 yield-expression"co_yield" assignment-expression $default reduce using rule 775 (yield-expression)

State 524

776 yield-expression"co_yield" braced-init-list $default reduce using rule 776 (yield-expression)

State 525

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 222 | SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 775 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 776 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 526

466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 472 new-placement "(" expression-list ")" 473 new-placement-opt %empty [IDENTIFIER, "::", "typename", "(", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 474 | new-placement "(" shift, and go to state 777 "(" [reduce using rule 473 (new-placement-opt)] $default reduce using rule 473 (new-placement-opt) new-placement go to state 778 new-placement-opt go to state 779

State 527

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 42 additive-expressionadditive-expression "+" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 780 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 528

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 43 additive-expressionadditive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 781 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 529

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 48 and-expressionand-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 782 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 530

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 147 compare-expressioncompare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 shift-expression go to state 783 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 531

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 257 equality-expressionequality-expression "==" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 784 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 532

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 258 equality-expressionequality-expression "!=" relational-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 785 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 533

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 263 exclusive-or-expressionexclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 786 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 534

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 278 expressionexpression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 787 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 535

214 decltype-specifier"decltype" "(" expression ")" $default reduce using rule 214 (decltype-specifier)

State 536

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 788 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 537

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list "..." reduce using rule 551 (parameter-declaration-list-opt) ")" reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 619 parameter-declaration-clause go to state 789 parameter-declaration-list go to state 621 parameter-declaration-list-opt go to state 622

State 538

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 644 simple-template-id template-name "<" template-argument-list-opt ">" 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 697 template-parameter type-parameter 698 | parameter-declaration 699 template-parameter-list template-parameter 700 | template-parameter-list "," template-parameter 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 716 type-parameter type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 717 | type-parameter-key IDENTIFIER-opt "=" type-id 718 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 719 | type-constraint IDENTIFIER-opt "=" type-id 720 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 721 | template-head type-parameter-key IDENTIFIER-opt "=" id-expression 722 type-parameter-key "class" 723 | "typename" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "template" shift, and go to state 216 "typename" shift, and go to state 217 "class" shift, and go to state 218 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 parameter-declaration go to state 222 simple-template-id go to state 96 template-head go to state 223 template-name go to state 102 template-parameter go to state 224 template-parameter-list go to state 790 type-constraint go to state 226 type-name go to state 106 type-parameter go to state 227 type-parameter-key go to state 228 typedef-name go to state 108

State 539

192 decl-specifier-seq-optdecl-specifier-seq $default reduce using rule 192 (decl-specifier-seq-opt)

State 540

389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 478 noexcept-specifier "noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt %empty ["alignas", "[", "{", "->", "requires"] 481 | noexcept-specifier "noexcept" shift, and go to state 791 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 792 noexcept-specifier-opt go to state 793

State 541

149 compound-statement "{" statement-seq-opt "}" 386 lambda-expressionlambda-introducer lambda-declarator compound-statement "{" shift, and go to state 794 compound-statement go to state 795

State 542

384 lambda-declaratorlambda-specifiers $default reduce using rule 384 (lambda-declarator)

State 543

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 410 template-argument-list go to state 411 template-argument-list-opt go to state 796 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 544

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 797 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 545

56 assignment-operator"=" $default reduce using rule 56 (assignment-operator)

State 546

57 assignment-operator"*=" $default reduce using rule 57 (assignment-operator)

State 547

58 assignment-operator"/=" $default reduce using rule 58 (assignment-operator)

State 548

59 assignment-operator"%=" $default reduce using rule 59 (assignment-operator)

State 549

60 assignment-operator"+=" $default reduce using rule 60 (assignment-operator)

State 550

61 assignment-operator"-=" $default reduce using rule 61 (assignment-operator)

State 551

62 assignment-operator">>=" $default reduce using rule 62 (assignment-operator)

State 552

63 assignment-operator"<<=" $default reduce using rule 63 (assignment-operator)

State 553

64 assignment-operator"&=" $default reduce using rule 64 (assignment-operator)

State 554

65 assignment-operator"^=" $default reduce using rule 65 (assignment-operator)

State 555

66 assignment-operator"|=" $default reduce using rule 66 (assignment-operator)

State 556

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 798 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 557

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 799 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 558

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 800 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 559

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 801 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 560

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 441 multiplicative-expressionmultiplicative-expression "/" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 802 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 561

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 442 multiplicative-expressionmultiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 803 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 562

169 conversion-function-id "operator" conversion-type-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 804 "operator" shift, and go to state 249 "~" shift, and go to state 336 conversion-function-id go to state 273 literal-operator-id go to state 283 operator-function-id go to state 290 simple-template-id go to state 805 template-id go to state 301 template-name go to state 102 unqualified-id go to state 806

State 563

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 410 template-argument-list go to state 411 template-argument-list-opt go to state 807 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 564

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 557 pm-expressionpm-expression ".*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 808 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 565

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 558 pm-expressionpm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 809 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 566

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 811 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 567

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty ["]"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 812 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 568

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression "template" shift, and go to state 230 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 813

State 569

21 TEMPLATE-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 22 | "template" 566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression "template" shift, and go to state 230 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 814

State 570

568 postfix-expressionpostfix-expression "++" $default reduce using rule 568 (postfix-expression)

State 571

569 postfix-expressionpostfix-expression "--" $default reduce using rule 569 (postfix-expression)

State 572

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 607 relational-expressionrelational-expression "<" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 815 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 573

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 608 relational-expressionrelational-expression ">" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 816 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 574

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 609 relational-expressionrelational-expression "<=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 817 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 575

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 610 relational-expressionrelational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 818 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 576

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 634 shift-expressionshift-expression "<<" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 819 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 577

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 635 shift-expressionshift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 820 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 578

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 821 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 579

564 postfix-expressionsimple-type-specifier braced-init-list $default reduce using rule 564 (postfix-expression)

State 580

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 822 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 581

565 postfix-expressiontypename-specifier braced-init-list $default reduce using rule 565 (postfix-expression)

State 582

737 unary-expressionunary-operator cast-expression $default reduce using rule 737 (unary-expression)

State 583

266 explicit-specifier"explicit" "(" constant-expression ")" $default reduce using rule 266 (explicit-specifier)

State 584

436 module-partition":" module-name-qualifier-opt IDENTIFIER $default reduce using rule 436 (module-partition)

State 585

430 module-import-declaration"import" header-name attribute-specifier-seq-opt ";" $default reduce using rule 430 (module-import-declaration)

State 586

428 module-import-declaration"import" module-name attribute-specifier-seq-opt ";" $default reduce using rule 428 (module-import-declaration)

State 587

433 module-name-qualifiermodule-name-qualifier IDENTIFIER "." $default reduce using rule 433 (module-name-qualifier)

State 588

429 module-import-declaration"import" module-partition attribute-specifier-seq-opt ";" $default reduce using rule 429 (module-import-declaration)

State 589

444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 601 qualified-namespace-specifiernested-name-specifier-opt namespace-name IDENTIFIER shift, and go to state 823 namespace-alias go to state 85 namespace-name go to state 824

State 590

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" ";" shift, and go to state 825

State 591

14 INLINE-opt"inline" $default reduce using rule 14 (INLINE-opt)

State 592

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" IDENTIFIER shift, and go to state 826

State 593

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" 682 string-literal STRING_LITERAL STRING_LITERAL shift, and go to state 118 string-literal go to state 827

State 594

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" ";" shift, and go to state 828

State 595

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 829

State 596

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 754 | INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 830 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 831 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 597

641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" $default reduce using rule 641 (simple-declaration)

State 598

242 enum-head-name-optenum-head-name $default reduce using rule 242 (enum-head-name-opt)

State 599

444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" IDENTIFIER shift, and go to state 823 namespace-alias go to state 85 namespace-name go to state 832

State 600

5 ELLIPSIS-opt %empty [")"] 6 | "..." 46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 833

State 601

5 ELLIPSIS-opt %empty [")"] 6 | "..." 45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 834

State 602

491 noptr-declaratornoptr-declarator parameters-and-qualifiers $default reduce using rule 491 (noptr-declarator)

State 603

493 noptr-declarator"(" ptr-declarator ")" $default reduce using rule 493 (noptr-declarator)

State 604

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ")" shift, and go to state 835

State 605

76 attribute-namespace IDENTIFIER 87 attribute-using-prefix"using" attribute-namespace ":" IDENTIFIER shift, and go to state 836 attribute-namespace go to state 837

State 606

89 attribute-using-prefix-optattribute-using-prefix $default reduce using rule 89 (attribute-using-prefix-opt)

State 607

67 attribute attribute-token attribute-argument-clause-opt 72 attribute-list attribute-opt 73 | attribute-list "," attribute-opt 74 | attribute "..." 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 838 $default reduce using rule 77 (attribute-opt) attribute go to state 839 attribute-list go to state 840 attribute-namespace go to state 841 attribute-opt go to state 842 attribute-scoped-token go to state 843 attribute-token go to state 844

State 608

175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 177 | cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq "const" shift, and go to state 15 "volatile" shift, and go to state 16 "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 608 cv-qualifier-seq go to state 609 cv-qualifier-seq-opt go to state 845

State 609

179 cv-qualifier-seq-optcv-qualifier-seq $default reduce using rule 179 (cv-qualifier-seq-opt)

State 610

593 ptr-operator"*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 593 (ptr-operator)

State 611

342 identifier-list IDENTIFIER 343 | identifier-list "," IDENTIFIER 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" IDENTIFIER shift, and go to state 846 identifier-list go to state 847

State 612

770 virt-specifier"final" $default reduce using rule 770 (virt-specifier)

State 613

769 virt-specifier"override" $default reduce using rule 769 (virt-specifier)

State 614

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 848 ":" shift, and go to state 849 "try" shift, and go to state 850 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 851 ctor-initializer-opt go to state 852 function-body go to state 853 function-try-block go to state 854

State 615

771 virt-specifier-seqvirt-specifier $default reduce using rule 771 (virt-specifier-seq)

State 616

769 virt-specifier "override" 770 | "final" 772 virt-specifier-seqvirt-specifier-seq virt-specifier 774 virt-specifier-seq-optvirt-specifier-seq [",", "=", ";", ":", "{", "try"] "final" shift, and go to state 612 "override" shift, and go to state 613 $default reduce using rule 774 (virt-specifier-seq-opt) virt-specifier go to state 855

State 617

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq "=" shift, and go to state 848 ":" shift, and go to state 849 "try" shift, and go to state 850 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 851 ctor-initializer-opt go to state 852 function-body go to state 856 function-try-block go to state 854

State 618

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 179 | cv-qualifier-seq 596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "alignas" [reduce using rule 178 (cv-qualifier-seq-opt)] "[" [reduce using rule 178 (cv-qualifier-seq-opt)] "const" [reduce using rule 178 (cv-qualifier-seq-opt)] "volatile" [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 cv-qualifier go to state 608 cv-qualifier-seq go to state 609 cv-qualifier-seq-opt go to state 857

State 619

549 parameter-declaration-listparameter-declaration $default reduce using rule 549 (parameter-declaration-list)

State 620

553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt ")" shift, and go to state 858

State 621

548 parameter-declaration-clauseparameter-declaration-list "," "..." 550 parameter-declaration-listparameter-declaration-list "," parameter-declaration 552 parameter-declaration-list-optparameter-declaration-list ["...", ")"] "," shift, and go to state 859 $default reduce using rule 552 (parameter-declaration-list-opt)

State 622

5 ELLIPSIS-opt %empty [")"] 6 | "..." 547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 860

State 623

160 constant-expression-optconstant-expression $default reduce using rule 160 (constant-expression-opt)

State 624

492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 861

State 625

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 702 trailing-return-type"->" type-id 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 862 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 626

212 declaratornoptr-declarator parameters-and-qualifiers trailing-return-type $default reduce using rule 212 (declarator)

State 627

36 access-specifier "private" 37 | "protected" 38 | "public" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", ";", "alignas", "(", "&", "[", ":", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 233 empty-declaration ";" 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 423 member-specification member-declaration member-specification-opt 424 | access-specifier ":" member-specification-opt 424 | access-specifier ":" member-specification-opt 425 member-specification-opt %empty ["}"] 426 | member-specification 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 763 using-declaration "using" using-declarator-list ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "template" shift, and go to state 7 "private" shift, and go to state 351 "protected" shift, and go to state 352 "public" shift, and go to state 353 "using" shift, and go to state 10 ";" shift, and go to state 11 "enum" shift, and go to state 354 "explicit" shift, and go to state 23 "static_assert" shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] ";" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 425 (member-specification-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 355 alias-declaration go to state 356 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 357 deduction-guide go to state 358 empty-declaration go to state 359 enum-key go to state 360 explicit-specialization go to state 361 explicit-specifier go to state 362 explicit-specifier-opt go to state 76 function-definition go to state 363 member-declaration go to state 364 member-specification go to state 365 member-specification-opt go to state 863 opaque-enum-declaration go to state 367 static_assert-declaration go to state 368 template-declaration go to state 369 template-head go to state 101 using-declaration go to state 370 using-enum-declaration go to state 371

State 628

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" 415 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 419 member-declarator-list member-declarator 420 | member-declarator-list "," member-declarator 421 member-declarator-list-opt %empty [";"] 422 | member-declarator-list 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 864 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] ";" reduce using rule 421 (member-declarator-list-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 165 IDENTIFIER-opt go to state 865 class-name go to state 55 declarator go to state 866 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 member-declarator go to state 867 member-declarator-list go to state 868 member-declarator-list-opt go to state 869 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 629

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 240 enum-head-name nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-head-name go to state 870 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 396 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 630

423 member-specificationmember-declaration member-specification-opt $default reduce using rule 423 (member-specification)

State 631

142 class-specifierclass-head "{" member-specification-opt "}" $default reduce using rule 142 (class-specifier)

State 632

36 access-specifier "private" 37 | "protected" 38 | "public" 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 102 base-specifierattribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "virtual" shift, and go to state 871 "private" shift, and go to state 351 "protected" shift, and go to state 352 "public" shift, and go to state 353 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] access-specifier go to state 872 alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 class-or-decltype go to state 873 decltype-specifier go to state 874 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 875 nested-name-specifier-opt go to state 876 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 633

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 105 base-specifier-listbase-specifier ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 877

State 634

99 base-clause":" base-specifier-list ["{"] 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "," shift, and go to state 878 $default reduce using rule 99 (base-clause)

State 635

143 class-virt-specifier"final" $default reduce using rule 143 (class-virt-specifier)

State 636

145 class-virt-specifier-optclass-virt-specifier $default reduce using rule 145 (class-virt-specifier-opt)

State 637

99 base-clause ":" base-specifier-list 100 base-clause-opt %empty ["{"] 101 | base-clause 131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt ":" shift, and go to state 372 $default reduce using rule 100 (base-clause-opt) base-clause go to state 373 base-clause-opt go to state 879

State 638

137 class-nameIDENTIFIER [":", "{", "final"] 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER [",", "constexpr", "...", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", ">", "explicit", "*", "requires", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 696 template-nameIDENTIFIER ["<"] ":" reduce using rule 137 (class-name) ":" [reduce using rule 229 (elaborated-type-specifier)] "{" reduce using rule 137 (class-name) "{" [reduce using rule 229 (elaborated-type-specifier)] "final" reduce using rule 137 (class-name) "<" reduce using rule 696 (template-name) $default reduce using rule 229 (elaborated-type-specifier)

State 639

133 class-head-namenested-name-specifier-opt class-name $default reduce using rule 133 (class-head-name)

State 640

138 class-namesimple-template-id $default reduce using rule 138 (class-name)

State 641

231 elaborated-type-specifierclass-key nested-name-specifier TEMPLATE-opt simple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" "::" shift, and go to state 673 "::" [reduce using rule 231 (elaborated-type-specifier)] $default reduce using rule 231 (elaborated-type-specifier)

State 642

361 initializer-clauseassignment-expression $default reduce using rule 361 (initializer-clause)

State 643

362 initializer-clausebraced-init-list $default reduce using rule 362 (initializer-clause)

State 644

116 brace-or-equal-initializer"=" initializer-clause $default reduce using rule 116 (brace-or-equal-initializer)

State 645

360 initializer"(" expression-list ")" ")" shift, and go to state 880

State 646

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 363 initializer-listinitializer-clause ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 881

State 647

279 expression-listinitializer-list [")", "]"] 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 882 $default reduce using rule 279 (expression-list)

State 648

122 braced-init-list"{" "}" $default reduce using rule 122 (braced-init-list)

State 649

227 designator"." IDENTIFIER IDENTIFIER shift, and go to state 883

State 650

225 designated-initializer-listdesignated-initializer-clause $default reduce using rule 225 (designated-initializer-list)

State 651

1 COMMA-opt %empty ["}"] 2 | "," 121 braced-init-list"{" designated-initializer-list COMMA-opt "}" 226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause "," shift, and go to state 884 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 885

State 652

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 224 designated-initializer-clausedesignator brace-or-equal-initializer "=" shift, and go to state 378 "{" shift, and go to state 380 brace-or-equal-initializer go to state 886 braced-init-list go to state 383

State 653

1 COMMA-opt %empty ["}"] 2 | "," 120 braced-init-list"{" initializer-list COMMA-opt "}" 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "," shift, and go to state 887 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 888

State 654

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 439 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 440 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 441 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 655

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 164 constraint-logical-or-expressionconstraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 889 "&&" [reduce using rule 164 (constraint-logical-or-expression)] $default reduce using rule 164 (constraint-logical-or-expression)

State 656

165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 621 requires-clause"requires" constraint-logical-or-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "||" shift, and go to state 890 $default reduce using rule 621 (requires-clause)

State 657

162 constraint-logical-and-expressionprimary-expression $default reduce using rule 162 (constraint-logical-and-expression)

State 658

351 init-declarator-listinit-declarator-list "," init-declarator $default reduce using rule 351 (init-declarator-list)

State 659

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 249 enumeratorIDENTIFIER attribute-specifier-seq-opt [",", "=", "}"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 $default reduce using rule 249 (enumerator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 660

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 251 enumerator-definitionenumerator "=" constant-expression 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 891 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 661

248 enum-specifierenum-head "{" enumerator-list "," "}" 249 enumerator IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition enumerator 251 | enumerator "=" constant-expression 253 enumerator-listenumerator-list "," enumerator-definition IDENTIFIER shift, and go to state 389 "}" shift, and go to state 892 enumerator go to state 390 enumerator-definition go to state 893

State 662

247 enum-specifierenum-head "{" enumerator-list-opt "}" $default reduce using rule 247 (enum-specifier)

State 663

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 236 enum-base":" type-specifier-seq 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 894 typedef-name go to state 108 typename-specifier go to state 109

State 664

238 enum-base-optenum-base $default reduce using rule 238 (enum-base-opt)

State 665

496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ";" shift, and go to state 895

State 666

239 enum-headenum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 239 (enum-head)

State 667

240 enum-head-namenested-name-specifier-opt IDENTIFIER $default reduce using rule 240 (enum-head-name)

State 668

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ")" shift, and go to state 896

State 669

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" 436 module-partition ":" module-name-qualifier-opt IDENTIFIER 437 module-partition-opt %empty [";", "alignas", "["] 438 | module-partition ":" shift, and go to state 138 $default reduce using rule 437 (module-partition-opt) module-partition go to state 897 module-partition-opt go to state 898

State 670

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ":" shift, and go to state 899

State 671

586 private-module-fragment-optprivate-module-fragment $default reduce using rule 586 (private-module-fragment-opt)

State 672

706 translation-unitglobal-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt $default reduce using rule 706 (translation-unit)

State 673

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" $default reduce using rule 457 (nested-name-specifier)

State 674

709 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" ">" shift, and go to state 900

State 675

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 150 concept-definition"concept" concept-name "=" constraint-expression ";" 161 constraint-expression logical-or-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 constraint-expression go to state 901 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 902 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 676

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 166 attribute-specifier go to state 167 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 903 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 677

686 template-argument-listtemplate-argument ELLIPSIS-opt $default reduce using rule 686 (template-argument-list)

State 678

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 904 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 679

644 simple-template-idtemplate-name "<" template-argument-list-opt ">" $default reduce using rule 644 (simple-template-id)

State 680

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 729 type-specifier-seqtype-specifier attribute-specifier-seq-opt [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "alignas" [reduce using rule 729 (type-specifier-seq)] "[" [reduce using rule 729 (type-specifier-seq)] $default reduce using rule 729 (type-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 681

730 type-specifier-seqtype-specifier type-specifier-seq $default reduce using rule 730 (type-specifier-seq)

State 682

489 noptr-abstract-pack-declarator"..." $default reduce using rule 489 (noptr-abstract-pack-declarator)

State 683

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 683 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 ptr-abstract-declarator go to state 906 ptr-operator go to state 907 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 684

33 abstract-declarator-optabstract-declarator $default reduce using rule 33 (abstract-declarator-opt)

State 685

712 type-idtype-specifier-seq abstract-declarator-opt $default reduce using rule 712 (type-id)

State 686

31 abstract-declaratorabstract-pack-declarator $default reduce using rule 31 (abstract-declarator)

State 687

486 noptr-abstract-declarator-optnoptr-abstract-declarator ["(", "["] 587 ptr-abstract-declaratornoptr-abstract-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] "(" reduce using rule 486 (noptr-abstract-declarator-opt) "(" [reduce using rule 587 (ptr-abstract-declarator)] "[" reduce using rule 486 (noptr-abstract-declarator-opt) $default reduce using rule 587 (ptr-abstract-declarator)

State 688

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 347 "[" shift, and go to state 908 parameters-and-qualifiers go to state 909

State 689

34 abstract-pack-declaratornoptr-abstract-pack-declarator [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 347 "[" shift, and go to state 910 "(" [reduce using rule 34 (abstract-pack-declarator)] $default reduce using rule 34 (abstract-pack-declarator) parameters-and-qualifiers go to state 911

State 690

29 abstract-declaratorptr-abstract-declarator $default reduce using rule 29 (abstract-declarator)

State 691

34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [",", "...", "=", ";", "(", ")", ":", "{", "final", ">", "try", "requires", "override"] 590 | ptr-abstract-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 682 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 683 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 589 (ptr-abstract-declarator-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "(" [reduce using rule 589 (ptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 589 (ptr-abstract-declarator-opt) abstract-pack-declarator go to state 912 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 noptr-abstract-pack-declarator go to state 689 ptr-abstract-declarator go to state 913 ptr-abstract-declarator-opt go to state 914 ptr-operator go to state 691 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 692

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" ")" shift, and go to state 915

State 693

390 linkage-specification"extern" string-literal "{" declaration-seq-opt "}" $default reduce using rule 390 (linkage-specification)

State 694

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 916 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 917 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 32 (abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 32 (abstract-declarator-opt) ELLIPSIS-opt go to state 165 abstract-declarator go to state 684 abstract-declarator-opt go to state 918 abstract-pack-declarator go to state 686 class-name go to state 55 declarator go to state 919 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 688 noptr-abstract-pack-declarator go to state 689 noptr-declarator go to state 173 ptr-abstract-declarator go to state 690 ptr-declarator go to state 174 ptr-operator go to state 920 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 695

11 IDENTIFIER-opt %empty [",", ">"] 12 | IDENTIFIER 720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt IDENTIFIER shift, and go to state 427 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 921

State 696

721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression "=" shift, and go to state 922

State 697

700 template-parameter-listtemplate-parameter-list "," template-parameter $default reduce using rule 700 (template-parameter-list)

State 698

623 requires-clause-optrequires-clause $default reduce using rule 623 (requires-clause-opt)

State 699

692 template-head"template" "<" template-parameter-list ">" requires-clause-opt $default reduce using rule 692 (template-head)

State 700

718 type-parametertype-constraint ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 718 (type-parameter)

State 701

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 719 type-parametertype-constraint IDENTIFIER-opt "=" type-id 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 923 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 702

716 type-parametertype-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 716 (type-parameter)

State 703

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 924 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 704

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" ";" shift, and go to state 925

State 705

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", ";", "alignas", "(", "&", "[", "&&", "decltype", "*"] 84 | attribute-specifier-seq 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seq defining-type-specifier attribute-specifier-seq-opt 220 | defining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 221 | defining-type-specifier defining-type-specifier-seq 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 926 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-specifier go to state 705 defining-type-specifier-seq go to state 927 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 706

29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [";"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 682 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 683 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 684 abstract-declarator-opt go to state 928 abstract-pack-declarator go to state 686 class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 688 noptr-abstract-pack-declarator go to state 689 ptr-abstract-declarator go to state 690 ptr-operator go to state 691 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 707

766 using-declarator-listusing-declarator-list "," using-declarator ELLIPSIS-opt $default reduce using rule 766 (using-declarator-list)

State 708

278 expressionexpression "," assignment-expression 477 noexcept-expression"noexcept" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 929

State 709

317 fold-operator"," $default reduce using rule 317 (fold-operator)

State 710

288 fold-operator"+" $default reduce using rule 288 (fold-operator)

State 711

289 fold-operator"-" $default reduce using rule 289 (fold-operator)

State 712

308 fold-operator"=" $default reduce using rule 308 (fold-operator)

State 713

294 fold-operator"&" $default reduce using rule 294 (fold-operator)

State 714

300 fold-operator"*=" $default reduce using rule 300 (fold-operator)

State 715

301 fold-operator"/=" $default reduce using rule 301 (fold-operator)

State 716

302 fold-operator"%=" $default reduce using rule 302 (fold-operator)

State 717

298 fold-operator"+=" $default reduce using rule 298 (fold-operator)

State 718

299 fold-operator"-=" $default reduce using rule 299 (fold-operator)

State 719

307 fold-operator">>=" $default reduce using rule 307 (fold-operator)

State 720

306 fold-operator"<<=" $default reduce using rule 306 (fold-operator)

State 721

304 fold-operator"&=" $default reduce using rule 304 (fold-operator)

State 722

303 fold-operator"^=" $default reduce using rule 303 (fold-operator)

State 723

305 fold-operator"|=" $default reduce using rule 305 (fold-operator)

State 724

315 fold-operator"&&" $default reduce using rule 315 (fold-operator)

State 725

316 fold-operator"||" $default reduce using rule 316 (fold-operator)

State 726

309 fold-operator"==" $default reduce using rule 309 (fold-operator)

State 727

310 fold-operator"!=" $default reduce using rule 310 (fold-operator)

State 728

293 fold-operator"^" $default reduce using rule 293 (fold-operator)

State 729

311 fold-operator"<" $default reduce using rule 311 (fold-operator)

State 730

312 fold-operator">" $default reduce using rule 312 (fold-operator)

State 731

290 fold-operator"*" $default reduce using rule 290 (fold-operator)

State 732

291 fold-operator"/" $default reduce using rule 291 (fold-operator)

State 733

292 fold-operator"%" $default reduce using rule 292 (fold-operator)

State 734

295 fold-operator"|" $default reduce using rule 295 (fold-operator)

State 735

296 fold-operator"<<" $default reduce using rule 296 (fold-operator)

State 736

297 fold-operator">>" $default reduce using rule 297 (fold-operator)

State 737

313 fold-operator"<=" $default reduce using rule 313 (fold-operator)

State 738

314 fold-operator">=" $default reduce using rule 314 (fold-operator)

State 739

318 fold-operator".*" $default reduce using rule 318 (fold-operator)

State 740

319 fold-operator"->*" $default reduce using rule 319 (fold-operator)

State 741

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 930 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 742

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" "..." shift, and go to state 931

State 743

579 primary-expression"(" expression ")" $default reduce using rule 579 (primary-expression)

State 744

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 932 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 745

636 simple-captureIDENTIFIER ELLIPSIS-opt $default reduce using rule 636 (simple-capture)

State 746

5 ELLIPSIS-opt %empty [",", "]"] 6 | "..." 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 933

State 747

347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer IDENTIFIER shift, and go to state 934

State 748

639 simple-capture"*" "this" $default reduce using rule 639 (simple-capture)

State 749

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 346 init-captureELLIPSIS-opt IDENTIFIER initializer 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" "=" shift, and go to state 378 "(" shift, and go to state 379 "{" shift, and go to state 380 brace-or-equal-initializer go to state 382 braced-init-list go to state 383 initializer go to state 935

State 750

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 381 lambda-capturecapture-default "," capture-list 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 443 "this" shift, and go to state 444 "&" shift, and go to state 936 "*" shift, and go to state 447 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 448 capture go to state 449 capture-list go to state 937 init-capture go to state 452 simple-capture go to state 455

State 751

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 128 capture-listcapture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 443 "this" shift, and go to state 444 "&" shift, and go to state 936 "*" shift, and go to state 447 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 448 capture go to state 938 init-capture go to state 452 simple-capture go to state 455

State 752

388 lambda-introducer"[" lambda-capture-opt "]" $default reduce using rule 388 (lambda-introducer)

State 753

504 overloadable-operator"(" ")" $default reduce using rule 504 (overloadable-operator)

State 754

505 overloadable-operator"[" "]" $default reduce using rule 505 (overloadable-operator)

State 755

502 overloadable-operator"delete" "[" "]" "]" shift, and go to state 939

State 756

501 overloadable-operator"new" "[" "]" "]" shift, and go to state 940

State 757

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 683 template-argument constant-expression 684 | type-id 685 | id-expression 686 template-argument-list template-argument ELLIPSIS-opt 687 | template-argument-list "," template-argument ELLIPSIS-opt 688 template-argument-list-opt %empty [">"] 689 | template-argument-list 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] ">" reduce using rule 688 (template-argument-list-opt) "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 407 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 408 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-argument go to state 410 template-argument-list go to state 411 template-argument-list-opt go to state 941 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 413 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 758

392 literal-operator-id"operator" string-literal IDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 735 ud-suffixIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "," reduce using rule 392 (literal-operator-id) "," [reduce using rule 735 (ud-suffix)] "constexpr" reduce using rule 392 (literal-operator-id) "constexpr" [reduce using rule 735 (ud-suffix)] "..." reduce using rule 392 (literal-operator-id) "..." [reduce using rule 735 (ud-suffix)] "export" reduce using rule 392 (literal-operator-id) "export" [reduce using rule 735 (ud-suffix)] "extern" reduce using rule 392 (literal-operator-id) "extern" [reduce using rule 735 (ud-suffix)] IDENTIFIER reduce using rule 392 (literal-operator-id) IDENTIFIER [reduce using rule 735 (ud-suffix)] "inline" reduce using rule 392 (literal-operator-id) "inline" [reduce using rule 735 (ud-suffix)] "noexcept" reduce using rule 392 (literal-operator-id) "noexcept" [reduce using rule 735 (ud-suffix)] "::" reduce using rule 392 (literal-operator-id) "::" [reduce using rule 735 (ud-suffix)] "template" reduce using rule 392 (literal-operator-id) "template" [reduce using rule 735 (ud-suffix)] "typename" reduce using rule 392 (literal-operator-id) "typename" [reduce using rule 735 (ud-suffix)] "virtual" reduce using rule 392 (literal-operator-id) "virtual" [reduce using rule 735 (ud-suffix)] "+" reduce using rule 392 (literal-operator-id) "+" [reduce using rule 735 (ud-suffix)] "-" reduce using rule 392 (literal-operator-id) "-" [reduce using rule 735 (ud-suffix)] "using" reduce using rule 392 (literal-operator-id) "using" [reduce using rule 735 (ud-suffix)] "=" reduce using rule 392 (literal-operator-id) "=" [reduce using rule 735 (ud-suffix)] ";" reduce using rule 392 (literal-operator-id) ";" [reduce using rule 735 (ud-suffix)] "alignas" reduce using rule 392 (literal-operator-id) "alignas" [reduce using rule 735 (ud-suffix)] "(" reduce using rule 392 (literal-operator-id) "(" [reduce using rule 735 (ud-suffix)] ")" reduce using rule 392 (literal-operator-id) ")" [reduce using rule 735 (ud-suffix)] "&" reduce using rule 392 (literal-operator-id) "&" [reduce using rule 735 (ud-suffix)] "asm" reduce using rule 392 (literal-operator-id) "asm" [reduce using rule 735 (ud-suffix)] "*=" reduce using rule 392 (literal-operator-id) "*=" [reduce using rule 735 (ud-suffix)] "/=" reduce using rule 392 (literal-operator-id) "/=" [reduce using rule 735 (ud-suffix)] "%=" reduce using rule 392 (literal-operator-id) "%=" [reduce using rule 735 (ud-suffix)] "+=" reduce using rule 392 (literal-operator-id) "+=" [reduce using rule 735 (ud-suffix)] "-=" reduce using rule 392 (literal-operator-id) "-=" [reduce using rule 735 (ud-suffix)] ">>=" reduce using rule 392 (literal-operator-id) ">>=" [reduce using rule 735 (ud-suffix)] "<<=" reduce using rule 392 (literal-operator-id) "<<=" [reduce using rule 735 (ud-suffix)] "&=" reduce using rule 392 (literal-operator-id) "&=" [reduce using rule 735 (ud-suffix)] "^=" reduce using rule 392 (literal-operator-id) "^=" [reduce using rule 735 (ud-suffix)] "|=" reduce using rule 392 (literal-operator-id) "|=" [reduce using rule 735 (ud-suffix)] "[" reduce using rule 392 (literal-operator-id) "[" [reduce using rule 735 (ud-suffix)] "]" reduce using rule 392 (literal-operator-id) "]" [reduce using rule 735 (ud-suffix)] ":" reduce using rule 392 (literal-operator-id) ":" [reduce using rule 735 (ud-suffix)] "{" reduce using rule 392 (literal-operator-id) "{" [reduce using rule 735 (ud-suffix)] "}" reduce using rule 392 (literal-operator-id) "}" [reduce using rule 735 (ud-suffix)] "class" reduce using rule 392 (literal-operator-id) "class" [reduce using rule 735 (ud-suffix)] "struct" reduce using rule 392 (literal-operator-id) "struct" [reduce using rule 735 (ud-suffix)] "union" reduce using rule 392 (literal-operator-id) "union" [reduce using rule 735 (ud-suffix)] "final" reduce using rule 392 (literal-operator-id) "final" [reduce using rule 735 (ud-suffix)] "<=>" reduce using rule 392 (literal-operator-id) "<=>" [reduce using rule 735 (ud-suffix)] "concept" reduce using rule 392 (literal-operator-id) "concept" [reduce using rule 735 (ud-suffix)] "?" reduce using rule 392 (literal-operator-id) "?" [reduce using rule 735 (ud-suffix)] "&&" reduce using rule 392 (literal-operator-id) "&&" [reduce using rule 735 (ud-suffix)] "||" reduce using rule 392 (literal-operator-id) "||" [reduce using rule 735 (ud-suffix)] "operator" reduce using rule 392 (literal-operator-id) "operator" [reduce using rule 735 (ud-suffix)] "const" reduce using rule 392 (literal-operator-id) "const" [reduce using rule 735 (ud-suffix)] "volatile" reduce using rule 392 (literal-operator-id) "volatile" [reduce using rule 735 (ud-suffix)] "friend" reduce using rule 392 (literal-operator-id) "friend" [reduce using rule 735 (ud-suffix)] "typedef" reduce using rule 392 (literal-operator-id) "typedef" [reduce using rule 735 (ud-suffix)] "consteval" reduce using rule 392 (literal-operator-id) "consteval" [reduce using rule 735 (ud-suffix)] "constinit" reduce using rule 392 (literal-operator-id) "constinit" [reduce using rule 735 (ud-suffix)] "decltype" reduce using rule 392 (literal-operator-id) "decltype" [reduce using rule 735 (ud-suffix)] "->" reduce using rule 392 (literal-operator-id) "->" [reduce using rule 735 (ud-suffix)] "." reduce using rule 392 (literal-operator-id) "." [reduce using rule 735 (ud-suffix)] "enum" reduce using rule 392 (literal-operator-id) "enum" [reduce using rule 735 (ud-suffix)] "==" reduce using rule 392 (literal-operator-id) "==" [reduce using rule 735 (ud-suffix)] "!=" reduce using rule 392 (literal-operator-id) "!=" [reduce using rule 735 (ud-suffix)] "^" reduce using rule 392 (literal-operator-id) "^" [reduce using rule 735 (ud-suffix)] "<" reduce using rule 392 (literal-operator-id) "<" [reduce using rule 735 (ud-suffix)] ">" reduce using rule 392 (literal-operator-id) ">" [reduce using rule 735 (ud-suffix)] "explicit" reduce using rule 392 (literal-operator-id) "explicit" [reduce using rule 735 (ud-suffix)] "*" reduce using rule 392 (literal-operator-id) "*" [reduce using rule 735 (ud-suffix)] "/" reduce using rule 392 (literal-operator-id) "/" [reduce using rule 735 (ud-suffix)] "%" reduce using rule 392 (literal-operator-id) "%" [reduce using rule 735 (ud-suffix)] "|" reduce using rule 392 (literal-operator-id) "|" [reduce using rule 735 (ud-suffix)] "<<" reduce using rule 392 (literal-operator-id) "<<" [reduce using rule 735 (ud-suffix)] ">>" reduce using rule 392 (literal-operator-id) ">>" [reduce using rule 735 (ud-suffix)] "<=" reduce using rule 392 (literal-operator-id) "<=" [reduce using rule 735 (ud-suffix)] ">=" reduce using rule 392 (literal-operator-id) ">=" [reduce using rule 735 (ud-suffix)] ".*" reduce using rule 392 (literal-operator-id) ".*" [reduce using rule 735 (ud-suffix)] "->*" reduce using rule 392 (literal-operator-id) "->*" [reduce using rule 735 (ud-suffix)] "try" reduce using rule 392 (literal-operator-id) "try" [reduce using rule 735 (ud-suffix)] "import" reduce using rule 392 (literal-operator-id) "import" [reduce using rule 735 (ud-suffix)] "namespace" reduce using rule 392 (literal-operator-id) "namespace" [reduce using rule 735 (ud-suffix)] "requires" reduce using rule 392 (literal-operator-id) "requires" [reduce using rule 735 (ud-suffix)] "~" reduce using rule 392 (literal-operator-id) "~" [reduce using rule 735 (ud-suffix)] "++" reduce using rule 392 (literal-operator-id) "++" [reduce using rule 735 (ud-suffix)] "--" reduce using rule 392 (literal-operator-id) "--" [reduce using rule 735 (ud-suffix)] "auto" reduce using rule 392 (literal-operator-id) "auto" [reduce using rule 735 (ud-suffix)] "char" reduce using rule 392 (literal-operator-id) "char" [reduce using rule 735 (ud-suffix)] "char8_t" reduce using rule 392 (literal-operator-id) "char8_t" [reduce using rule 735 (ud-suffix)] "char16_t" reduce using rule 392 (literal-operator-id) "char16_t" [reduce using rule 735 (ud-suffix)] "char32_t" reduce using rule 392 (literal-operator-id) "char32_t" [reduce using rule 735 (ud-suffix)] "wchar_t" reduce using rule 392 (literal-operator-id) "wchar_t" [reduce using rule 735 (ud-suffix)] "bool" reduce using rule 392 (literal-operator-id) "bool" [reduce using rule 735 (ud-suffix)] "short" reduce using rule 392 (literal-operator-id) "short" [reduce using rule 735 (ud-suffix)] "int" reduce using rule 392 (literal-operator-id) "int" [reduce using rule 735 (ud-suffix)] "long" reduce using rule 392 (literal-operator-id) "long" [reduce using rule 735 (ud-suffix)] "signed" reduce using rule 392 (literal-operator-id) "signed" [reduce using rule 735 (ud-suffix)] "unsigned" reduce using rule 392 (literal-operator-id) "unsigned" [reduce using rule 735 (ud-suffix)] "float" reduce using rule 392 (literal-operator-id) "float" [reduce using rule 735 (ud-suffix)] "double" reduce using rule 392 (literal-operator-id) "double" [reduce using rule 735 (ud-suffix)] "void" reduce using rule 392 (literal-operator-id) "void" [reduce using rule 735 (ud-suffix)] "static_assert" reduce using rule 392 (literal-operator-id) "static_assert" [reduce using rule 735 (ud-suffix)] "static" reduce using rule 392 (literal-operator-id) "static" [reduce using rule 735 (ud-suffix)] "thread_local" reduce using rule 392 (literal-operator-id) "thread_local" [reduce using rule 735 (ud-suffix)] "mutable" reduce using rule 392 (literal-operator-id) "mutable" [reduce using rule 735 (ud-suffix)] "override" reduce using rule 392 (literal-operator-id) "override" [reduce using rule 735 (ud-suffix)] $default reduce using rule 392 (literal-operator-id)

State 759

762 user-defined-string-literalstring-literal ud-suffix $default reduce using rule 762 (user-defined-string-literal)

State 760

168 conversion-declarator-optconversion-declarator $default reduce using rule 168 (conversion-declarator-opt)

State 761

170 conversion-type-idtype-specifier-seq conversion-declarator-opt $default reduce using rule 170 (conversion-type-id)

State 762

137 class-name IDENTIFIER 138 | simple-template-id 166 conversion-declarator ptr-operator conversion-declarator-opt 166 | ptr-operator conversion-declarator-opt 167 conversion-declarator-opt %empty [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] 168 | conversion-declarator 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] "::" [reduce using rule 167 (conversion-declarator-opt)] "&" [reduce using rule 167 (conversion-declarator-opt)] "&&" [reduce using rule 167 (conversion-declarator-opt)] "decltype" [reduce using rule 167 (conversion-declarator-opt)] "*" [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 760 conversion-declarator-opt go to state 942 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 ptr-operator go to state 762 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 763

616 requirement-parameter-list"(" parameter-declaration-clause ")" ")" shift, and go to state 943

State 764

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement "requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirement simple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 619 requirement-seq requirement 620 | requirement-seq requirement 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 643 simple-requirement expression ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement "typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 944 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 945 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 946 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 compound-requirement go to state 947 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 948 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 nested-requirement go to state 949 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requirement go to state 950 requirement-seq go to state 951 requires-expression go to state 296 shift-expression go to state 297 simple-requirement go to state 952 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 953 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 765

624 requires-expression"requires" requirement-parameter-list-opt requirement-body $default reduce using rule 624 (requires-expression)

State 766

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 954

State 767

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 955

State 768

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 956

State 769

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" ">" shift, and go to state 957

State 770

278 expressionexpression "," assignment-expression 574 postfix-expression"typeid" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 958

State 771

575 postfix-expression"typeid" "(" type-id ")" ")" shift, and go to state 959

State 772

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" IDENTIFIER shift, and go to state 960

State 773

742 unary-expression"sizeof" "(" type-id ")" ")" shift, and go to state 961

State 774

744 unary-expression"alignof" "(" type-id ")" ")" shift, and go to state 962

State 775

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 223 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 443 "this" shift, and go to state 444 "=" shift, and go to state 445 "&" shift, and go to state 446 "]" shift, and go to state 963 "*" shift, and go to state 447 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "]" [reduce using rule 382 (lambda-capture-opt)] ELLIPSIS-opt go to state 448 capture go to state 449 capture-default go to state 450 capture-list go to state 451 init-capture go to state 452 lambda-capture go to state 453 lambda-capture-opt go to state 454 simple-capture go to state 455

State 776

222 delete-expressionSCOPE-opt "delete" cast-expression $default reduce using rule 222 (delete-expression)

State 777

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 472 new-placement"(" expression-list ")" 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 964 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 778

474 new-placement-optnew-placement $default reduce using rule 474 (new-placement-opt)

State 779

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 475 new-type-id type-specifier-seq new-declarator-opt 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "(" shift, and go to state 965 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 new-type-id go to state 966 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 967 typedef-name go to state 108 typename-specifier go to state 109

State 780

42 additive-expressionadditive-expression "+" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 559 "/" shift, and go to state 560 "%" shift, and go to state 561 $default reduce using rule 42 (additive-expression)

State 781

43 additive-expressionadditive-expression "-" multiplicative-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] 440 multiplicative-expressionmultiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression "*" shift, and go to state 559 "/" shift, and go to state 560 "%" shift, and go to state 561 $default reduce using rule 43 (additive-expression)

State 782

48 and-expressionand-expression "&" equality-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] 257 equality-expressionequality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression "==" shift, and go to state 531 "!=" shift, and go to state 532 $default reduce using rule 48 (and-expression)

State 783

147 compare-expressioncompare-expression "<=>" shift-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] 634 shift-expressionshift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression "<<" shift, and go to state 576 ">>" shift, and go to state 577 $default reduce using rule 147 (compare-expression)

State 784

257 equality-expressionequality-expression "==" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 572 ">" shift, and go to state 573 "<=" shift, and go to state 574 ">=" shift, and go to state 575 $default reduce using rule 257 (equality-expression) Conflict between rule 257 and token ">" resolved as shift ("==" < ">").

State 785

258 equality-expressionequality-expression "!=" relational-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "|"] 607 relational-expressionrelational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression "<" shift, and go to state 572 ">" shift, and go to state 573 "<=" shift, and go to state 574 ">=" shift, and go to state 575 $default reduce using rule 258 (equality-expression) Conflict between rule 258 and token ">" resolved as shift ("!=" < ">").

State 786

48 and-expressionand-expression "&" equality-expression 263 exclusive-or-expressionexclusive-or-expression "^" and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "^", ">", "|"] "&" shift, and go to state 529 $default reduce using rule 263 (exclusive-or-expression)

State 787

278 expressionexpression "," assignment-expression $default reduce using rule 278 (expression)

State 788

263 exclusive-or-expressionexclusive-or-expression "^" and-expression 345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">", "|"] "^" shift, and go to state 533 $default reduce using rule 345 (inclusive-or-expression)

State 789

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt ")" shift, and go to state 968

State 790

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 700 template-parameter-listtemplate-parameter-list "," template-parameter "," shift, and go to state 425 ">" shift, and go to state 969

State 791

478 noexcept-specifier"noexcept" "(" constant-expression ")" 479 | "noexcept" [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "(" shift, and go to state 970 "(" [reduce using rule 479 (noexcept-specifier)] $default reduce using rule 479 (noexcept-specifier)

State 792

481 noexcept-specifier-optnoexcept-specifier $default reduce using rule 481 (noexcept-specifier-opt)

State 793

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 971

State 794

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 149 compound-statement"{" statement-seq-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 672 statement-seq statement 673 | statement-seq statement 674 statement-seq-opt %empty ["}"] 675 | statement-seq 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 674 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 978 statement-seq go to state 979 statement-seq-opt go to state 980 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 795

386 lambda-expressionlambda-introducer lambda-declarator compound-statement $default reduce using rule 386 (lambda-expression)

State 796

695 template-idliteral-operator-id "<" template-argument-list-opt ">" ">" shift, and go to state 981

State 797

345 inclusive-or-expressioninclusive-or-expression "|" exclusive-or-expression 395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", ">"] "|" shift, and go to state 536 $default reduce using rule 395 (logical-and-expression)

State 798

157 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression 278 expressionexpression "," assignment-expression "," shift, and go to state 534 ":" shift, and go to state 982

State 799

395 logical-and-expressionlogical-and-expression "&&" inclusive-or-expression 397 logical-or-expressionlogical-or-expression "||" logical-and-expression [",", "...", "=", ";", ")", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "||", ">"] "&&" shift, and go to state 544 $default reduce using rule 397 (logical-or-expression)

State 800

53 assignment-expressionlogical-or-expression assignment-operator initializer-clause $default reduce using rule 53 (assignment-expression)

State 801

440 multiplicative-expressionmultiplicative-expression "*" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 564 "->*" shift, and go to state 565 $default reduce using rule 440 (multiplicative-expression)

State 802

441 multiplicative-expressionmultiplicative-expression "/" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 564 "->*" shift, and go to state 565 $default reduce using rule 441 (multiplicative-expression)

State 803

442 multiplicative-expressionmultiplicative-expression "%" pm-expression [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">="] 557 pm-expressionpm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression ".*" shift, and go to state 564 "->*" shift, and go to state 565 $default reduce using rule 442 (multiplicative-expression)

State 804

696 template-nameIDENTIFIER ["<"] 755 unqualified-idIDENTIFIER [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 805

457 nested-name-specifiernested-name-specifier TEMPLATE-opt simple-template-id "::" 693 template-idsimple-template-id [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "+", "-", "using", "=", ";", "alignas", "(", ")", "&", "asm", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "class", "struct", "union", "final", "<=>", "concept", "?", "&&", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", ".", "enum", "==", "!=", "^", "<", ">", "explicit", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "try", "import", "namespace", "requires", "~", "++", "--", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", "override"] "::" shift, and go to state 673 "::" [reduce using rule 693 (template-id)] $default reduce using rule 693 (template-id)

State 806

600 qualified-idnested-name-specifier TEMPLATE-opt unqualified-id $default reduce using rule 600 (qualified-id)

State 807

694 template-idoperator-function-id "<" template-argument-list-opt ">" ">" shift, and go to state 983

State 808

557 pm-expressionpm-expression ".*" cast-expression $default reduce using rule 557 (pm-expression)

State 809

558 pm-expressionpm-expression "->*" cast-expression $default reduce using rule 558 (pm-expression)

State 810

281 expression-list-optexpression-list $default reduce using rule 281 (expression-list-opt)

State 811

561 postfix-expressionpostfix-expression "(" expression-list-opt ")" ")" shift, and go to state 984

State 812

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" "]" shift, and go to state 985

State 813

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "~" shift, and go to state 336 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 986 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 qualified-id go to state 294 simple-template-id go to state 298 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 814

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "~" shift, and go to state 336 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 987 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 qualified-id go to state 294 simple-template-id go to state 298 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 815

147 compare-expressioncompare-expression "<=>" shift-expression 607 relational-expressionrelational-expression "<" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 530 $default reduce using rule 607 (relational-expression)

State 816

147 compare-expressioncompare-expression "<=>" shift-expression 608 relational-expressionrelational-expression ">" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 530 $default reduce using rule 608 (relational-expression)

State 817

147 compare-expressioncompare-expression "<=>" shift-expression 609 relational-expressionrelational-expression "<=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 530 $default reduce using rule 609 (relational-expression)

State 818

147 compare-expressioncompare-expression "<=>" shift-expression 610 relational-expressionrelational-expression ">=" compare-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<=", ">="] "<=>" shift, and go to state 530 $default reduce using rule 610 (relational-expression)

State 819

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 634 shift-expressionshift-expression "<<" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 527 "-" shift, and go to state 528 $default reduce using rule 634 (shift-expression)

State 820

42 additive-expressionadditive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 635 shift-expressionshift-expression ">>" additive-expression [",", "...", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "|", "<<", ">>", "<=", ">="] "+" shift, and go to state 527 "-" shift, and go to state 528 $default reduce using rule 635 (shift-expression)

State 821

562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" ")" shift, and go to state 988

State 822

563 postfix-expressiontypename-specifier "(" expression-list-opt ")" ")" shift, and go to state 989

State 823

444 namespace-aliasIDENTIFIER [";"] 450 namespace-nameIDENTIFIER [";"] ";" reduce using rule 444 (namespace-alias) ";" [reduce using rule 450 (namespace-name)] $default reduce using rule 444 (namespace-alias)

State 824

601 qualified-namespace-specifiernested-name-specifier-opt namespace-name $default reduce using rule 601 (qualified-namespace-specifier)

State 825

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" $default reduce using rule 445 (namespace-alias-definition)

State 826

235 enclosing-namespace-specifierenclosing-namespace-specifier "::" INLINE-opt IDENTIFIER ["::"] 460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "{" shift, and go to state 990 $default reduce using rule 235 (enclosing-namespace-specifier)

State 827

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ")" shift, and go to state 991

State 828

676 static_assert-declaration"static_assert" "(" constant-expression ")" ";" $default reduce using rule 676 (static_assert-declaration)

State 829

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 443 | INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 830 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 992 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 830

446 namespace-bodydeclaration-seq-opt $default reduce using rule 446 (namespace-body)

State 831

754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" "}" shift, and go to state 993

State 832

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" ";" shift, and go to state 994

State 833

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" ")" shift, and go to state 995

State 834

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" ")" shift, and go to state 996

State 835

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" ";" shift, and go to state 997

State 836

76 attribute-namespaceIDENTIFIER $default reduce using rule 76 (attribute-namespace)

State 837

87 attribute-using-prefix"using" attribute-namespace ":" ":" shift, and go to state 998

State 838

76 attribute-namespaceIDENTIFIER ["::"] 85 attribute-tokenIDENTIFIER [",", "...", "(", "]"] "::" reduce using rule 76 (attribute-namespace) $default reduce using rule 85 (attribute-token)

State 839

74 attribute-listattribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 999 $default reduce using rule 78 (attribute-opt)

State 840

73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "," shift, and go to state 1000 "]" shift, and go to state 1001

State 841

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER "::" shift, and go to state 1002

State 842

72 attribute-listattribute-opt $default reduce using rule 72 (attribute-list)

State 843

86 attribute-tokenattribute-scoped-token $default reduce using rule 86 (attribute-token)

State 844

67 attributeattribute-token attribute-argument-clause-opt 68 attribute-argument-clause "(" balanced-token-seq-opt ")" 69 attribute-argument-clause-opt %empty [",", "...", "]"] 70 | attribute-argument-clause "(" shift, and go to state 1003 $default reduce using rule 69 (attribute-argument-clause-opt) attribute-argument-clause go to state 1004 attribute-argument-clause-opt go to state 1005

State 845

177 cv-qualifier-seqcv-qualifier cv-qualifier-seq-opt $default reduce using rule 177 (cv-qualifier-seq)

State 846

342 identifier-listIDENTIFIER $default reduce using rule 342 (identifier-list)

State 847

343 identifier-listidentifier-list "," IDENTIFIER 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "," shift, and go to state 1006 "]" shift, and go to state 1007

State 848

325 function-body"=" "default" ";" 326 | "=" "delete" ";" "delete" shift, and go to state 1008 "default" shift, and go to state 1009

State 849

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 172 ctor-initializer":" mem-initializer-list 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 398 mem-initializer mem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-id class-or-decltype 401 | IDENTIFIER 402 mem-initializer-list mem-initializer ELLIPSIS-opt 403 | mem-initializer-list "," mem-initializer ELLIPSIS-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 1010 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1011 decltype-specifier go to state 874 enum-name go to state 71 mem-initializer go to state 1012 mem-initializer-id go to state 1013 mem-initializer-list go to state 1014 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 875 nested-name-specifier-opt go to state 876 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 850

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq ":" shift, and go to state 849 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 851 ctor-initializer-opt go to state 1015

State 851

174 ctor-initializer-optctor-initializer $default reduce using rule 174 (ctor-initializer-opt)

State 852

149 compound-statement "{" statement-seq-opt "}" 323 function-bodyctor-initializer-opt compound-statement "{" shift, and go to state 794 compound-statement go to state 1016

State 853

328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body $default reduce using rule 328 (function-definition)

State 854

324 function-bodyfunction-try-block $default reduce using rule 324 (function-body)

State 855

772 virt-specifier-seqvirt-specifier-seq virt-specifier $default reduce using rule 772 (virt-specifier-seq)

State 856

327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body $default reduce using rule 327 (function-definition)

State 857

596 ptr-operatornested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 596 (ptr-operator)

State 858

175 cv-qualifier "const" 176 | "volatile" 177 cv-qualifier-seq cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "&", "[", ":", "{", "final", "&&", "->", ">", "try", "requires", "override"] 179 | cv-qualifier-seq 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "const" shift, and go to state 15 "volatile" shift, and go to state 16 $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 608 cv-qualifier-seq go to state 609 cv-qualifier-seq-opt go to state 1017

State 859

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 548 parameter-declaration-clauseparameter-declaration-list "," "..." 550 parameter-declaration-listparameter-declaration-list "," parameter-declaration "..." shift, and go to state 1018 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 parameter-declaration go to state 1019

State 860

547 parameter-declaration-clauseparameter-declaration-list-opt ELLIPSIS-opt $default reduce using rule 547 (parameter-declaration-clause)

State 861

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1020

State 862

702 trailing-return-type"->" type-id $default reduce using rule 702 (trailing-return-type)

State 863

424 member-specificationaccess-specifier ":" member-specification-opt $default reduce using rule 424 (member-specification)

State 864

12 IDENTIFIER-optIDENTIFIER ["alignas", "[", ":"] 137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 12 (IDENTIFIER-opt)

State 865

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1021

State 866

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty [",", "=", ";", ":", "{", "try"] 774 | virt-specifier-seq "=" shift, and go to state 378 "{" shift, and go to state 380 "final" shift, and go to state 612 "requires" shift, and go to state 381 "override" shift, and go to state 613 "," reduce using rule 118 (brace-or-equal-initializer-opt) "," [reduce using rule 773 (virt-specifier-seq-opt)] "=" [reduce using rule 773 (virt-specifier-seq-opt)] ";" reduce using rule 118 (brace-or-equal-initializer-opt) ";" [reduce using rule 773 (virt-specifier-seq-opt)] ":" reduce using rule 773 (virt-specifier-seq-opt) "{" [reduce using rule 773 (virt-specifier-seq-opt)] "try" reduce using rule 773 (virt-specifier-seq-opt) $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1022 brace-or-equal-initializer-opt go to state 1023 braced-init-list go to state 383 requires-clause go to state 1024 virt-specifier go to state 615 virt-specifier-seq go to state 616 virt-specifier-seq-opt go to state 1025

State 867

419 member-declarator-listmember-declarator $default reduce using rule 419 (member-declarator-list)

State 868

420 member-declarator-listmember-declarator-list "," member-declarator 422 member-declarator-list-optmember-declarator-list [";"] "," shift, and go to state 1026 $default reduce using rule 422 (member-declarator-list-opt)

State 869

404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" ";" shift, and go to state 1027

State 870

236 enum-base ":" type-specifier-seq 237 enum-base-opt %empty [";"] 238 | enum-base 496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" ":" shift, and go to state 663 $default reduce using rule 237 (enum-base-opt) enum-base go to state 664 enum-base-opt go to state 665

State 871

36 access-specifier "private" 37 | "protected" 38 | "public" 39 access-specifier-opt %empty [IDENTIFIER, "::", "decltype"] 40 | access-specifier 103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype "private" shift, and go to state 351 "protected" shift, and go to state 352 "public" shift, and go to state 353 $default reduce using rule 39 (access-specifier-opt) access-specifier go to state 1028 access-specifier-opt go to state 1029

State 872

27 VIRTUAL-opt %empty [IDENTIFIER, "::", "decltype"] 28 | "virtual" 104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype "virtual" shift, and go to state 1030 $default reduce using rule 27 (VIRTUAL-opt) VIRTUAL-opt go to state 1031

State 873

102 base-specifierattribute-specifier-seq-opt class-or-decltype $default reduce using rule 102 (base-specifier)

State 874

141 class-or-decltypedecltype-specifier [",", "...", "(", "{"] 455 nested-name-specifierdecltype-specifier "::" "::" shift, and go to state 189 $default reduce using rule 141 (class-or-decltype)

State 875

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 140 class-or-decltypenested-name-specifier "template" simple-template-id 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] IDENTIFIER shift, and go to state 198 "template" shift, and go to state 1032 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 200

State 876

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltypenested-name-specifier-opt type-name 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 507 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1033 typedef-name go to state 108

State 877

105 base-specifier-listbase-specifier ELLIPSIS-opt $default reduce using rule 105 (base-specifier-list)

State 878

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 102 base-specifier attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 632 base-specifier go to state 1034

State 879

131 class-headclass-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt $default reduce using rule 131 (class-head)

State 880

360 initializer"(" expression-list ")" $default reduce using rule 360 (initializer)

State 881

363 initializer-listinitializer-clause ELLIPSIS-opt $default reduce using rule 363 (initializer-list)

State 882

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 1035 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 883

227 designator"." IDENTIFIER $default reduce using rule 227 (designator)

State 884

2 COMMA-opt"," ["}"] 224 designated-initializer-clause designator brace-or-equal-initializer 226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause 227 designator "." IDENTIFIER "." shift, and go to state 649 $default reduce using rule 2 (COMMA-opt) designated-initializer-clause go to state 1036 designator go to state 652

State 885

121 braced-init-list"{" designated-initializer-list COMMA-opt "}" "}" shift, and go to state 1037

State 886

224 designated-initializer-clausedesignator brace-or-equal-initializer $default reduce using rule 224 (designated-initializer-clause)

State 887

2 COMMA-opt"," ["}"] 19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "}" reduce using rule 2 (COMMA-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 1035 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 888

120 braced-init-list"{" initializer-list COMMA-opt "}" "}" shift, and go to state 1038

State 889

137 class-name IDENTIFIER 138 | simple-template-id 163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 654 "[" shift, and go to state 247 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "requires" shift, and go to state 251 "~" shift, and go to state 336 "literal" shift, and go to state 260 STRING_LITERAL shift, and go to state 118 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 primary-expression go to state 1039 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 890

137 class-name IDENTIFIER 138 | simple-template-id 162 constraint-logical-and-expression primary-expression 163 | constraint-logical-and-expression "&&" primary-expression 165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "this" shift, and go to state 242 "(" shift, and go to state 654 "[" shift, and go to state 247 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "requires" shift, and go to state 251 "~" shift, and go to state 336 "literal" shift, and go to state 260 STRING_LITERAL shift, and go to state 118 class-name go to state 55 constraint-logical-and-expression go to state 1040 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 primary-expression go to state 657 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 891

251 enumerator-definitionenumerator "=" constant-expression $default reduce using rule 251 (enumerator-definition)

State 892

248 enum-specifierenum-head "{" enumerator-list "," "}" $default reduce using rule 248 (enum-specifier)

State 893

253 enumerator-listenumerator-list "," enumerator-definition $default reduce using rule 253 (enumerator-list)

State 894

236 enum-base":" type-specifier-seq $default reduce using rule 236 (enum-base)

State 895

496 opaque-enum-declarationenum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" $default reduce using rule 496 (opaque-enum-declaration)

State 896

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" "->" shift, and go to state 1041

State 897

438 module-partition-optmodule-partition $default reduce using rule 438 (module-partition-opt)

State 898

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1042

State 899

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt "private" shift, and go to state 1043

State 900

709 type-constraintnested-name-specifier-opt concept-name "<" template-argument-list-opt ">" $default reduce using rule 709 (type-constraint)

State 901

150 concept-definition"concept" concept-name "=" constraint-expression ";" ";" shift, and go to state 1044

State 902

161 constraint-expressionlogical-or-expression [";"] 397 logical-or-expressionlogical-or-expression "||" logical-and-expression "||" shift, and go to state 557 $default reduce using rule 161 (constraint-expression)

State 903

229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER IDENTIFIER shift, and go to state 1045

State 904

5 ELLIPSIS-opt %empty [",", ">"] 6 | "..." 687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1046

State 905

482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 553 parameters-and-qualifiers "(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "(" shift, and go to state 347 "[" shift, and go to state 908 parameters-and-qualifiers go to state 1047

State 906

484 noptr-abstract-declarator"(" ptr-abstract-declarator ")" ")" shift, and go to state 1048

State 907

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [")"] 590 | ptr-abstract-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 683 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 589 (ptr-abstract-declarator-opt) $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 ptr-abstract-declarator go to state 913 ptr-abstract-declarator-opt go to state 914 ptr-operator go to state 907 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 908

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 623 constant-expression-opt go to state 1049 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 909

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] 702 trailing-return-type "->" type-id "->" shift, and go to state 625 $default reduce using rule 482 (noptr-abstract-declarator) trailing-return-type go to state 1050

State 910

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 159 constant-expression-opt %empty ["]"] 160 | constant-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 159 (constant-expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 623 constant-expression-opt go to state 1051 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 911

487 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator parameters-and-qualifiers $default reduce using rule 487 (noptr-abstract-pack-declarator)

State 912

35 abstract-pack-declaratorptr-operator abstract-pack-declarator $default reduce using rule 35 (abstract-pack-declarator)

State 913

590 ptr-abstract-declarator-optptr-abstract-declarator $default reduce using rule 590 (ptr-abstract-declarator-opt)

State 914

588 ptr-abstract-declaratorptr-operator ptr-abstract-declarator-opt $default reduce using rule 588 (ptr-abstract-declarator)

State 915

555 placeholder-type-specifiertype-constraint-opt "decltype" "(" "auto" ")" $default reduce using rule 555 (placeholder-type-specifier)

State 916

6 ELLIPSIS-opt"..." [IDENTIFIER, "::", "operator", "decltype", "~"] 489 noptr-abstract-pack-declarator"..." [",", "...", "=", "(", ")", "[", ">"] IDENTIFIER reduce using rule 6 (ELLIPSIS-opt) "::" reduce using rule 6 (ELLIPSIS-opt) "operator" reduce using rule 6 (ELLIPSIS-opt) "decltype" reduce using rule 6 (ELLIPSIS-opt) "~" reduce using rule 6 (ELLIPSIS-opt) $default reduce using rule 489 (noptr-abstract-pack-declarator)

State 917

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 917 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 noptr-declarator go to state 329 ptr-abstract-declarator go to state 906 ptr-declarator go to state 330 ptr-operator go to state 1052 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 918

545 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt [",", "...", ")", ">"] 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause "=" shift, and go to state 1053 $default reduce using rule 545 (parameter-declaration)

State 919

543 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator [",", "...", ")", ">"] 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause "=" shift, and go to state 1054 $default reduce using rule 543 (parameter-declaration)

State 920

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [",", "...", "=", ")", ">"] 590 | ptr-abstract-declarator 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 916 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 917 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "..." [reduce using rule 589 (ptr-abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] "[" reduce using rule 485 (noptr-abstract-declarator-opt) "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 589 (ptr-abstract-declarator-opt) ELLIPSIS-opt go to state 165 abstract-pack-declarator go to state 912 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 noptr-abstract-pack-declarator go to state 689 noptr-declarator go to state 329 ptr-abstract-declarator go to state 913 ptr-abstract-declarator-opt go to state 914 ptr-declarator go to state 350 ptr-operator go to state 920 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 921

720 type-parametertemplate-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt $default reduce using rule 720 (type-parameter)

State 922

137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 340 id-expression unqualified-id 341 | qualified-id 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression 731 typedef-name IDENTIFIER 732 | simple-template-id 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "::" shift, and go to state 6 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "~" shift, and go to state 336 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 121 enum-name go to state 71 id-expression go to state 1055 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 338 operator-function-id go to state 290 qualified-id go to state 294 simple-template-id go to state 298 template-id go to state 301 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 306

State 923

719 type-parametertype-constraint IDENTIFIER-opt "=" type-id $default reduce using rule 719 (type-parameter)

State 924

717 type-parametertype-parameter-key IDENTIFIER-opt "=" type-id $default reduce using rule 717 (type-parameter)

State 925

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" $default reduce using rule 44 (alias-declaration)

State 926

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 220 defining-type-specifier-seqdefining-type-specifier attribute-specifier-seq-opt ["...", IDENTIFIER, "::", ";", "(", "&", "[", "&&", "decltype", "*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 220 (defining-type-specifier-seq)] $default reduce using rule 220 (defining-type-specifier-seq) alignment-specifier go to state 166 attribute-specifier go to state 167

State 927

221 defining-type-specifier-seqdefining-type-specifier defining-type-specifier-seq $default reduce using rule 221 (defining-type-specifier-seq)

State 928

216 defining-type-iddefining-type-specifier-seq abstract-declarator-opt $default reduce using rule 216 (defining-type-id)

State 929

477 noexcept-expression"noexcept" "(" expression ")" $default reduce using rule 477 (noexcept-expression)

State 930

286 fold-expression"(" "..." fold-operator cast-expression ")" ")" shift, and go to state 1056

State 931

285 fold-expression"(" cast-expression fold-operator "..." ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 288 fold-operator "+" 289 | "-" 290 | "*" 291 | "/" 292 | "%" 293 | "^" 294 | "&" 295 | "|" 296 | "<<" 297 | ">>" 298 | "+=" 299 | "-=" 300 | "*=" 301 | "/=" 302 | "%=" 303 | "^=" 304 | "&=" 305 | "|=" 306 | "<<=" 307 | ">>=" 308 | "=" 309 | "==" 310 | "!=" 311 | "<" 312 | ">" 313 | "<=" 314 | ">=" 315 | "&&" 316 | "||" 317 | "," 318 | ".*" 319 | "->*" "," shift, and go to state 709 "+" shift, and go to state 710 "-" shift, and go to state 711 "=" shift, and go to state 712 ")" shift, and go to state 1057 "&" shift, and go to state 713 "*=" shift, and go to state 714 "/=" shift, and go to state 715 "%=" shift, and go to state 716 "+=" shift, and go to state 717 "-=" shift, and go to state 718 ">>=" shift, and go to state 719 "<<=" shift, and go to state 720 "&=" shift, and go to state 721 "^=" shift, and go to state 722 "|=" shift, and go to state 723 "&&" shift, and go to state 724 "||" shift, and go to state 725 "==" shift, and go to state 726 "!=" shift, and go to state 727 "^" shift, and go to state 728 "<" shift, and go to state 729 ">" shift, and go to state 730 "*" shift, and go to state 731 "/" shift, and go to state 732 "%" shift, and go to state 733 "|" shift, and go to state 734 "<<" shift, and go to state 735 ">>" shift, and go to state 736 "<=" shift, and go to state 737 ">=" shift, and go to state 738 ".*" shift, and go to state 739 "->*" shift, and go to state 740 fold-operator go to state 1058

State 932

130 cast-expression"(" type-id ")" cast-expression $default reduce using rule 130 (cast-expression)

State 933

637 simple-capture"&" IDENTIFIER ELLIPSIS-opt $default reduce using rule 637 (simple-capture)

State 934

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" "=" shift, and go to state 378 "(" shift, and go to state 379 "{" shift, and go to state 380 brace-or-equal-initializer go to state 382 braced-init-list go to state 383 initializer go to state 1059

State 935

346 init-captureELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 346 (init-capture)

State 936

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer 637 simple-capture"&" IDENTIFIER ELLIPSIS-opt "..." shift, and go to state 156 IDENTIFIER shift, and go to state 746 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 747

State 937

128 capture-listcapture-list "," capture 381 lambda-capturecapture-default "," capture-list ["]"] "," shift, and go to state 751 $default reduce using rule 381 (lambda-capture)

State 938

128 capture-listcapture-list "," capture $default reduce using rule 128 (capture-list)

State 939

502 overloadable-operator"delete" "[" "]" $default reduce using rule 502 (overloadable-operator)

State 940

501 overloadable-operator"new" "[" "]" $default reduce using rule 501 (overloadable-operator)

State 941

498 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" ">" shift, and go to state 1060

State 942

166 conversion-declaratorptr-operator conversion-declarator-opt $default reduce using rule 166 (conversion-declarator)

State 943

616 requirement-parameter-list"(" parameter-declaration-clause ")" $default reduce using rule 616 (requirement-parameter-list)

State 944

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 1061 nested-name-specifier-opt go to state 1062 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 945

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1063 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 946

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 161 constraint-expression logical-or-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement"requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 616 requirement-parameter-list "(" parameter-declaration-clause ")" 617 requirement-parameter-list-opt %empty ["{"] 618 | requirement-parameter-list 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 624 | "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 1064 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "{" reduce using rule 617 (requirement-parameter-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 constraint-expression go to state 1065 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 902 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requirement-parameter-list go to state 505 requirement-parameter-list-opt go to state 506 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 947

613 requirementcompound-requirement $default reduce using rule 613 (requirement)

State 948

278 expressionexpression "," assignment-expression 643 simple-requirementexpression ";" "," shift, and go to state 534 ";" shift, and go to state 1066

State 949

614 requirementnested-requirement $default reduce using rule 614 (requirement)

State 950

619 requirement-seqrequirement $default reduce using rule 619 (requirement-seq)

State 951

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 148 compound-requirement "{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 461 nested-requirement "requires" constraint-expression ";" 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 611 requirement simple-requirement 612 | type-requirement 613 | compound-requirement 614 | nested-requirement 615 requirement-body"{" requirement-seq "}" 620 requirement-seqrequirement-seq requirement 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 643 simple-requirement expression ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement "typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 944 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 945 "}" shift, and go to state 1067 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 946 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 compound-requirement go to state 947 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 948 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 nested-requirement go to state 949 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requirement go to state 1068 requires-expression go to state 296 shift-expression go to state 297 simple-requirement go to state 952 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 953 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 952

611 requirementsimple-requirement $default reduce using rule 611 (requirement)

State 953

612 requirementtype-requirement $default reduce using rule 612 (requirement)

State 954

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1069

State 955

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1070

State 956

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1071

State 957

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "(" shift, and go to state 1072

State 958

574 postfix-expression"typeid" "(" expression ")" $default reduce using rule 574 (postfix-expression)

State 959

575 postfix-expression"typeid" "(" type-id ")" $default reduce using rule 575 (postfix-expression)

State 960

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" ")" shift, and go to state 1073

State 961

742 unary-expression"sizeof" "(" type-id ")" $default reduce using rule 742 (unary-expression)

State 962

744 unary-expression"alignof" "(" type-id ")" $default reduce using rule 744 (unary-expression)

State 963

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 1074 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 964

472 new-placement"(" expression-list ")" ")" shift, and go to state 1075

State 965

134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 1076 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 109

State 966

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 468 new-initializer "(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 471 | new-initializer "(" shift, and go to state 1077 "{" shift, and go to state 380 "{" [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1078 new-initializer go to state 1079 new-initializer-opt go to state 1080

State 967

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 462 new-declarator ptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 465 | new-declarator 475 new-type-idtype-specifier-seq new-declarator-opt 494 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "[" shift, and go to state 1081 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "&" [reduce using rule 464 (new-declarator-opt)] "&&" [reduce using rule 464 (new-declarator-opt)] "*" [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 new-declarator go to state 1082 new-declarator-opt go to state 1083 noptr-new-declarator go to state 1084 ptr-operator go to state 1085 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 968

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->", "requires"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 539 decl-specifier-seq-opt go to state 540 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-specifiers go to state 1086 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 969

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "::", "typename", "virtual", "alignas", "(", "[", "{", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 623 | requires-clause "requires" shift, and go to state 381 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 698 requires-clause-opt go to state 1087

State 970

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 478 noexcept-specifier"noexcept" "(" constant-expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 1088 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 971

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 702 trailing-return-type "->" type-id 703 trailing-return-type-opt %empty ["{", "requires"] 704 | trailing-return-type "alignas" shift, and go to state 158 "[" shift, and go to state 162 "->" shift, and go to state 625 $default reduce using rule 703 (trailing-return-type-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 trailing-return-type go to state 1089 trailing-return-type-opt go to state 1090

State 972

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" IDENTIFIER shift, and go to state 1091

State 973

84 attribute-specifier-seq-optattribute-specifier-seq ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 641 simple-declarationattribute-specifier-seq decl-specifier-seq init-declarator-list ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 84 (attribute-specifier-seq-opt)] "extern" [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 84 (attribute-specifier-seq-opt)] "::" [reduce using rule 84 (attribute-specifier-seq-opt)] "typename" [reduce using rule 84 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 84 (attribute-specifier-seq-opt)] "class" [reduce using rule 84 (attribute-specifier-seq-opt)] "struct" [reduce using rule 84 (attribute-specifier-seq-opt)] "union" [reduce using rule 84 (attribute-specifier-seq-opt)] "const" [reduce using rule 84 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 84 (attribute-specifier-seq-opt)] "friend" [reduce using rule 84 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 84 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 84 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 84 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 84 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 84 (attribute-specifier-seq-opt)] "auto" reduce using rule 84 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 84 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 84 (attribute-specifier-seq-opt)] "bool" [reduce using rule 84 (attribute-specifier-seq-opt)] "short" [reduce using rule 84 (attribute-specifier-seq-opt)] "int" [reduce using rule 84 (attribute-specifier-seq-opt)] "long" [reduce using rule 84 (attribute-specifier-seq-opt)] "signed" [reduce using rule 84 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 84 (attribute-specifier-seq-opt)] "float" [reduce using rule 84 (attribute-specifier-seq-opt)] "double" [reduce using rule 84 (attribute-specifier-seq-opt)] "void" [reduce using rule 84 (attribute-specifier-seq-opt)] "static" [reduce using rule 84 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 84 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 153 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 974

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 149 compound-statement "{" statement-seq-opt "}" 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 171 coroutine-return-statement "co_return" expr-or-braced-init-list-opt ";" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 367 iteration-statement "while" "(" condition ")" statement 368 | "do" statement "while" "(" expression ")" ";" 369 | "for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 371 jump-statement "break" ";" 372 | "continue" ";" 373 | "return" expr-or-braced-init-list-opt ";" 374 | coroutine-return-statement 375 | "goto" IDENTIFIER ";" 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement 632 | "switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 665 statementattribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 671 | attribute-specifier-seq-opt try-block 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 707 try-block "try" compound-statement handler-seq 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 1092 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 157 "alignas" shift, and go to state 158 "(" shift, and go to state 245 "&" shift, and go to state 246 "asm" shift, and go to state 161 "[" shift, and go to state 1093 "co_await" shift, and go to state 248 "{" shift, and go to state 794 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "co_return" shift, and go to state 1094 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 250 "default" shift, and go to state 1095 "try" shift, and go to state 1096 "while" shift, and go to state 1097 "do" shift, and go to state 1098 "for" shift, and go to state 1099 "break" shift, and go to state 1100 "continue" shift, and go to state 1101 "return" shift, and go to state 1102 "goto" shift, and go to state 1103 "case" shift, and go to state 1104 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "if" shift, and go to state 1105 "switch" shift, and go to state 1106 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 alignment-specifier go to state 166 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier go to state 167 await-expression go to state 269 cast-expression go to state 270 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 271 compound-statement go to state 1107 conditional-expression go to state 272 conversion-function-id go to state 273 coroutine-return-statement go to state 1108 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1109 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 275 exclusive-or-expression go to state 276 explicit-specifier go to state 155 expression go to state 1110 expression-opt go to state 1111 expression-statement go to state 1112 fold-expression go to state 278 function-specifier go to state 79 id-expression go to state 279 inclusive-or-expression go to state 280 iteration-statement go to state 1113 jump-statement go to state 1114 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 selection-statement go to state 1115 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 storage-class-specifier go to state 99 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 try-block go to state 1116 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 975

210 declaration-statementblock-declaration $default reduce using rule 210 (declaration-statement)

State 976

670 statementdeclaration-statement $default reduce using rule 670 (statement)

State 977

664 statementlabeled-statement $default reduce using rule 664 (statement)

State 978

672 statement-seqstatement $default reduce using rule 672 (statement-seq)

State 979

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 673 statement-seqstatement-seq statement 675 statement-seq-optstatement-seq ["}"] 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 675 (statement-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1117 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 980

149 compound-statement"{" statement-seq-opt "}" "}" shift, and go to state 1118

State 981

695 template-idliteral-operator-id "<" template-argument-list-opt ">" $default reduce using rule 695 (template-id)

State 982

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 1119 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 983

694 template-idoperator-function-id "<" template-argument-list-opt ">" $default reduce using rule 694 (template-id)

State 984

561 postfix-expressionpostfix-expression "(" expression-list-opt ")" $default reduce using rule 561 (postfix-expression)

State 985

560 postfix-expressionpostfix-expression "[" expression-list-opt "]" $default reduce using rule 560 (postfix-expression)

State 986

567 postfix-expressionpostfix-expression "->" TEMPLATE-opt id-expression $default reduce using rule 567 (postfix-expression)

State 987

566 postfix-expressionpostfix-expression "." TEMPLATE-opt id-expression $default reduce using rule 566 (postfix-expression)

State 988

562 postfix-expressionsimple-type-specifier "(" expression-list-opt ")" $default reduce using rule 562 (postfix-expression)

State 989

563 postfix-expressiontypename-specifier "(" expression-list-opt ")" $default reduce using rule 563 (postfix-expression)

State 990

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty ["}"] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 446 namespace-body declaration-seq-opt 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 460 | "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "}" reduce using rule 208 (declaration-seq-opt) "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 830 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 1120 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 991

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" ";" shift, and go to state 1121

State 992

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1122

State 993

754 unnamed-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" $default reduce using rule 754 (unnamed-namespace-definition)

State 994

767 using-directiveattribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" $default reduce using rule 767 (using-directive)

State 995

46 alignment-specifier"alignas" "(" constant-expression ELLIPSIS-opt ")" $default reduce using rule 46 (alignment-specifier)

State 996

45 alignment-specifier"alignas" "(" type-id ELLIPSIS-opt ")" $default reduce using rule 45 (alignment-specifier)

State 997

49 asm-declarationattribute-specifier-seq-opt "asm" "(" string-literal ")" ";" $default reduce using rule 49 (asm-declaration)

State 998

87 attribute-using-prefix"using" attribute-namespace ":" $default reduce using rule 87 (attribute-using-prefix)

State 999

74 attribute-listattribute "..." $default reduce using rule 74 (attribute-list)

State 1000

67 attribute attribute-token attribute-argument-clause-opt 73 attribute-listattribute-list "," attribute-opt 75 | attribute-list "," attribute "..." 76 attribute-namespace IDENTIFIER 77 attribute-opt %empty [",", "]"] 78 | attribute 79 attribute-scoped-token attribute-namespace "::" IDENTIFIER 85 attribute-token IDENTIFIER 86 | attribute-scoped-token IDENTIFIER shift, and go to state 838 $default reduce using rule 77 (attribute-opt) attribute go to state 1123 attribute-namespace go to state 841 attribute-opt go to state 1124 attribute-scoped-token go to state 843 attribute-token go to state 844

State 1001

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" "]" shift, and go to state 1125

State 1002

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER IDENTIFIER shift, and go to state 1126

State 1003

68 attribute-argument-clause"(" balanced-token-seq-opt ")" 91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1127 "[" shift, and go to state 1128 "{" shift, and go to state 1129 BALANCED_TOKEN shift, and go to state 1130 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1131 balanced-token-seq go to state 1132 balanced-token-seq-opt go to state 1133

State 1004

70 attribute-argument-clause-optattribute-argument-clause $default reduce using rule 70 (attribute-argument-clause-opt)

State 1005

67 attributeattribute-token attribute-argument-clause-opt $default reduce using rule 67 (attribute)

State 1006

343 identifier-listidentifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 1134

State 1007

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 359 initializer brace-or-equal-initializer 360 | "(" expression-list ")" 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "=" shift, and go to state 378 "(" shift, and go to state 379 "{" shift, and go to state 380 brace-or-equal-initializer go to state 382 braced-init-list go to state 383 initializer go to state 1135

State 1008

326 function-body"=" "delete" ";" ";" shift, and go to state 1136

State 1009

325 function-body"=" "default" ";" ";" shift, and go to state 1137

State 1010

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 401 mem-initializer-idIDENTIFIER ["(", "{"] 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) $default reduce using rule 401 (mem-initializer-id)

State 1011

400 mem-initializer-idclass-or-decltype $default reduce using rule 400 (mem-initializer-id)

State 1012

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 402 mem-initializer-listmem-initializer ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1138

State 1013

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list "(" shift, and go to state 1139 "{" shift, and go to state 380 braced-init-list go to state 1140

State 1014

172 ctor-initializer":" mem-initializer-list ["{"] 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "," shift, and go to state 1141 $default reduce using rule 172 (ctor-initializer)

State 1015

149 compound-statement "{" statement-seq-opt "}" 331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq "{" shift, and go to state 794 compound-statement go to state 1142

State 1016

323 function-bodyctor-initializer-opt compound-statement $default reduce using rule 323 (function-body)

State 1017

553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty [",", "...", "noexcept", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 605 | ref-qualifier "&" shift, and go to state 339 "&&" shift, and go to state 340 $default reduce using rule 604 (ref-qualifier-opt) ref-qualifier go to state 341 ref-qualifier-opt go to state 1143

State 1018

548 parameter-declaration-clauseparameter-declaration-list "," "..." $default reduce using rule 548 (parameter-declaration-clause)

State 1019

550 parameter-declaration-listparameter-declaration-list "," parameter-declaration $default reduce using rule 550 (parameter-declaration-list)

State 1020

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 492 noptr-declaratornoptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 492 (noptr-declarator)] $default reduce using rule 492 (noptr-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1021

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "alignas" shift, and go to state 158 "[" shift, and go to state 162 ":" shift, and go to state 1144 alignment-specifier go to state 166 attribute-specifier go to state 167

State 1022

119 brace-or-equal-initializer-optbrace-or-equal-initializer $default reduce using rule 119 (brace-or-equal-initializer-opt)

State 1023

417 member-declaratordeclarator brace-or-equal-initializer-opt $default reduce using rule 417 (member-declarator)

State 1024

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 328 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 416 member-declaratordeclarator requires-clause [",", ";"] "=" shift, and go to state 848 ":" shift, and go to state 849 "try" shift, and go to state 850 "{" reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 416 (member-declarator) ctor-initializer go to state 851 ctor-initializer-opt go to state 852 function-body go to state 853 function-try-block go to state 854

State 1025

172 ctor-initializer ":" mem-initializer-list 173 ctor-initializer-opt %empty ["{"] 174 | ctor-initializer 323 function-body ctor-initializer-opt compound-statement 324 | function-try-block 325 | "=" "default" ";" 326 | "=" "delete" ";" 327 function-definitionattribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 331 function-try-block "try" ctor-initializer-opt compound-statement handler-seq 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 597 pure-specifier "=" '0' 598 pure-specifier-opt %empty [",", ";"] 599 | pure-specifier "=" shift, and go to state 1145 ":" shift, and go to state 849 "try" shift, and go to state 850 "{" reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 598 (pure-specifier-opt) ctor-initializer go to state 851 ctor-initializer-opt go to state 852 function-body go to state 856 function-try-block go to state 854 pure-specifier go to state 1146 pure-specifier-opt go to state 1147

State 1026

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 11 IDENTIFIER-opt %empty ["alignas", "[", ":"] 12 | IDENTIFIER 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 415 member-declarator declarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 420 member-declarator-listmember-declarator-list "," member-declarator 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 864 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "operator" reduce using rule 5 (ELLIPSIS-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] "~" reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 165 IDENTIFIER-opt go to state 865 class-name go to state 55 declarator go to state 1148 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 member-declarator go to state 1149 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1027

404 member-declarationattribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt ";" $default reduce using rule 404 (member-declaration)

State 1028

40 access-specifier-optaccess-specifier $default reduce using rule 40 (access-specifier-opt)

State 1029

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1150 decltype-specifier go to state 874 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 875 nested-name-specifier-opt go to state 876 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1030

28 VIRTUAL-opt"virtual" $default reduce using rule 28 (VIRTUAL-opt)

State 1031

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1151 decltype-specifier go to state 874 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 875 nested-name-specifier-opt go to state 876 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1032

22 TEMPLATE-opt"template" [IDENTIFIER] 140 class-or-decltypenested-name-specifier "template" simple-template-id 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] simple-template-id go to state 1152 template-name go to state 102

State 1033

139 class-or-decltypenested-name-specifier-opt type-name $default reduce using rule 139 (class-or-decltype)

State 1034

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1153

State 1035

5 ELLIPSIS-opt %empty [",", ")", "]", "}"] 6 | "..." 364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1154

State 1036

226 designated-initializer-listdesignated-initializer-list "," designated-initializer-clause $default reduce using rule 226 (designated-initializer-list)

State 1037

121 braced-init-list"{" designated-initializer-list COMMA-opt "}" $default reduce using rule 121 (braced-init-list)

State 1038

120 braced-init-list"{" initializer-list COMMA-opt "}" $default reduce using rule 120 (braced-init-list)

State 1039

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression $default reduce using rule 163 (constraint-logical-and-expression)

State 1040

163 constraint-logical-and-expressionconstraint-logical-and-expression "&&" primary-expression 165 constraint-logical-or-expressionconstraint-logical-or-expression "||" constraint-logical-and-expression [",", "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "::", "template", "typename", "virtual", "using", "=", ";", "alignas", "(", "&", "asm", "[", ":", "{", "class", "struct", "union", "concept", "||", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "->", "enum", "explicit", "*", "try", "import", "namespace", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable"] "&&" shift, and go to state 889 $default reduce using rule 165 (constraint-logical-or-expression) Conflict between rule 165 and token "&&" resolved as shift ("||" < "&&").

State 1041

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER IDENTIFIER shift, and go to state 192 simple-template-id go to state 1155 template-name go to state 102

State 1042

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" ";" shift, and go to state 1156 "alignas" shift, and go to state 158 "[" shift, and go to state 162 alignment-specifier go to state 166 attribute-specifier go to state 167

State 1043

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt ";" shift, and go to state 1157

State 1044

150 concept-definition"concept" concept-name "=" constraint-expression ";" $default reduce using rule 150 (concept-definition)

State 1045

229 elaborated-type-specifierclass-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER $default reduce using rule 229 (elaborated-type-specifier)

State 1046

687 template-argument-listtemplate-argument-list "," template-argument ELLIPSIS-opt $default reduce using rule 687 (template-argument-list)

State 1047

482 noptr-abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers $default reduce using rule 482 (noptr-abstract-declarator)

State 1048

484 noptr-abstract-declarator"(" ptr-abstract-declarator ")" $default reduce using rule 484 (noptr-abstract-declarator)

State 1049

483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1158

State 1050

30 abstract-declaratornoptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type $default reduce using rule 30 (abstract-declarator)

State 1051

488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1159

State 1052

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 588 | ptr-operator ptr-abstract-declarator-opt 589 ptr-abstract-declarator-opt %empty [")"] 590 | ptr-abstract-declarator 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 917 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 589 (ptr-abstract-declarator-opt) "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 905 noptr-declarator go to state 329 ptr-abstract-declarator go to state 913 ptr-abstract-declarator-opt go to state 914 ptr-declarator go to state 350 ptr-operator go to state 1052 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1053

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 546 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 1160 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1054

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 544 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 1161 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1055

721 type-parametertemplate-head type-parameter-key IDENTIFIER-opt "=" id-expression $default reduce using rule 721 (type-parameter)

State 1056

286 fold-expression"(" "..." fold-operator cast-expression ")" $default reduce using rule 286 (fold-expression)

State 1057

285 fold-expression"(" cast-expression fold-operator "..." ")" $default reduce using rule 285 (fold-expression)

State 1058

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 await-expression go to state 269 cast-expression go to state 1162 class-name go to state 55 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 fold-expression go to state 278 id-expression go to state 279 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 requires-expression go to state 296 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 1059

347 init-capture"&" ELLIPSIS-opt IDENTIFIER initializer $default reduce using rule 347 (init-capture)

State 1060

498 operator-function-id"operator" overloadable-operator "<" template-argument-list-opt ">" $default reduce using rule 498 (operator-function-id)

State 1061

21 TEMPLATE-opt %empty [IDENTIFIER] 22 | "template" 456 nested-name-specifiernested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 459 nested-name-specifier-optnested-name-specifier [IDENTIFIER] 733 typename-specifier"typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 229 "template" shift, and go to state 230 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 231

State 1062

137 class-name IDENTIFIER 138 | simple-template-id 246 enum-name IDENTIFIER 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 724 type-requirement"typename" nested-name-specifier-opt type-name ";" 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 507 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1163 typedef-name go to state 108

State 1063

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 278 expressionexpression "," assignment-expression "," shift, and go to state 534 "}" shift, and go to state 1164

State 1064

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "this", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 130 | "(" type-id ")" cast-expression 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 285 | "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 543 parameter-declaration attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause 547 parameter-declaration-clause parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list "," "..." 549 parameter-declaration-list parameter-declaration 550 | parameter-declaration-list "," parameter-declaration 551 parameter-declaration-list-opt %empty ["...", ")"] 552 | parameter-declaration-list 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 616 requirement-parameter-list"(" parameter-declaration-clause ")" 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 712 type-id type-specifier-seq abstract-declarator-opt 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "..." shift, and go to state 439 IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 "..." [reduce using rule 551 (parameter-declaration-list-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "this" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] ")" reduce using rule 551 (parameter-declaration-list-opt) "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 220 await-expression go to state 269 cast-expression go to state 440 class-key go to state 406 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 441 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 parameter-declaration go to state 619 parameter-declaration-clause go to state 763 parameter-declaration-list go to state 621 parameter-declaration-list-opt go to state 622 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 409 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 442 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 415 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1065

461 nested-requirement"requires" constraint-expression ";" ";" shift, and go to state 1165

State 1066

643 simple-requirementexpression ";" $default reduce using rule 643 (simple-requirement)

State 1067

615 requirement-body"{" requirement-seq "}" $default reduce using rule 615 (requirement-body)

State 1068

620 requirement-seqrequirement-seq requirement $default reduce using rule 620 (requirement-seq)

State 1069

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1166 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1070

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1167 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1071

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1168 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1072

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1169 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1073

743 unary-expression"sizeof" "..." "(" IDENTIFIER ")" $default reduce using rule 743 (unary-expression)

State 1074

223 delete-expressionSCOPE-opt "delete" "[" "]" cast-expression $default reduce using rule 223 (delete-expression)

State 1075

472 new-placement"(" expression-list ")" $default reduce using rule 472 (new-placement)

State 1076

467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt ")" shift, and go to state 1170

State 1077

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer"(" expression-list-opt ")" 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 1171 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1078

469 new-initializerbraced-init-list $default reduce using rule 469 (new-initializer)

State 1079

471 new-initializer-optnew-initializer $default reduce using rule 471 (new-initializer-opt)

State 1080

466 new-expressionSCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt $default reduce using rule 466 (new-expression)

State 1081

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty ["]"] 283 | expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "]" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1110 expression-opt go to state 1172 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1082

465 new-declarator-optnew-declarator $default reduce using rule 465 (new-declarator-opt)

State 1083

475 new-type-idtype-specifier-seq new-declarator-opt $default reduce using rule 475 (new-type-id)

State 1084

463 new-declaratornoptr-new-declarator [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "[" shift, and go to state 1173 $default reduce using rule 463 (new-declarator)

State 1085

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 462 new-declarator ptr-operator new-declarator-opt 462 | ptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt %empty [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 465 | new-declarator 494 noptr-new-declarator "[" expression-opt "]" attribute-specifier-seq-opt 495 | noptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "&" shift, and go to state 160 "[" shift, and go to state 1081 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 "&" [reduce using rule 464 (new-declarator-opt)] "&&" [reduce using rule 464 (new-declarator-opt)] "*" [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 new-declarator go to state 1082 new-declarator-opt go to state 1174 noptr-new-declarator go to state 1084 ptr-operator go to state 1085 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1086

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 621 requires-clause "requires" constraint-logical-or-expression 622 requires-clause-opt %empty ["{"] 623 | requires-clause "requires" shift, and go to state 381 $default reduce using rule 622 (requires-clause-opt) requires-clause go to state 698 requires-clause-opt go to state 1175

State 1087

131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt %empty ["noexcept", "alignas", "[", "{", "->"] 192 | decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 384 lambda-declarator lambda-specifiers 385 | "(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 389 lambda-specifiers decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "(" shift, and go to state 537 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 539 decl-specifier-seq-opt go to state 540 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 lambda-declarator go to state 1176 lambda-specifiers go to state 542 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1088

478 noexcept-specifier"noexcept" "(" constant-expression ")" ")" shift, and go to state 1177

State 1089

704 trailing-return-type-opttrailing-return-type $default reduce using rule 704 (trailing-return-type-opt)

State 1090

389 lambda-specifiersdecl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 389 (lambda-specifiers)

State 1091

445 namespace-alias-definition"namespace" IDENTIFIER "=" qualified-namespace-specifier ";" "=" shift, and go to state 320

State 1092

137 class-nameIDENTIFIER ["::"] 246 enum-nameIDENTIFIER ["::"] 376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement 444 namespace-aliasIDENTIFIER ["::"] 450 namespace-nameIDENTIFIER ["::"] 696 template-nameIDENTIFIER ["<"] 731 typedef-nameIDENTIFIER ["::"] 755 unqualified-idIDENTIFIER [",", "+", "-", "=", ";", "(", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "<=>", "?", "&&", "||", "->", ".", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*", "++", "--"] ":" shift, and go to state 1178 "::" reduce using rule 137 (class-name) "::" [reduce using rule 246 (enum-name)] "::" [reduce using rule 444 (namespace-alias)] "::" [reduce using rule 450 (namespace-name)] "::" [reduce using rule 731 (typedef-name)] "<" reduce using rule 696 (template-name) "<" [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)

State 1093

5 ELLIPSIS-opt %empty [IDENTIFIER] 6 | "..." 80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" 123 capture simple-capture 124 | init-capture 125 capture-default "&" 126 | "=" 127 capture-list capture 128 | capture-list "," capture 346 init-capture ELLIPSIS-opt IDENTIFIER initializer 347 | "&" ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture capture-default 380 | capture-list 381 | capture-default "," capture-list 382 lambda-capture-opt %empty ["]"] 383 | lambda-capture 388 lambda-introducer"[" lambda-capture-opt "]" 636 simple-capture IDENTIFIER ELLIPSIS-opt 637 | "&" IDENTIFIER ELLIPSIS-opt 638 | "this" 639 | "*" "this" "..." shift, and go to state 156 IDENTIFIER shift, and go to state 443 "this" shift, and go to state 444 "=" shift, and go to state 445 "&" shift, and go to state 446 "[" shift, and go to state 333 "*" shift, and go to state 447 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 448 capture go to state 449 capture-default go to state 450 capture-list go to state 451 init-capture go to state 452 lambda-capture go to state 453 lambda-capture-opt go to state 454 simple-capture go to state 455

State 1094

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 275 expr-or-braced-init-list-opt %empty [";"] 276 | expr-or-braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 275 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 braced-init-list go to state 1179 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expr-or-braced-init-list go to state 1180 expr-or-braced-init-list-opt go to state 1181 expression go to state 1182 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1095

378 labeled-statementattribute-specifier-seq-opt "default" ":" statement ":" shift, and go to state 1183

State 1096

149 compound-statement "{" statement-seq-opt "}" 707 try-block"try" compound-statement handler-seq "{" shift, and go to state 794 compound-statement go to state 1184

State 1097

367 iteration-statement"while" "(" condition ")" statement "(" shift, and go to state 1185

State 1098

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 368 iteration-statement"do" statement "while" "(" expression ")" ";" 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1186 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1099

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement "(" shift, and go to state 1187

State 1100

371 jump-statement"break" ";" ";" shift, and go to state 1188

State 1101

372 jump-statement"continue" ";" ";" shift, and go to state 1189

State 1102

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 275 expr-or-braced-init-list-opt %empty [";"] 276 | expr-or-braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 373 jump-statement"return" expr-or-braced-init-list-opt ";" 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ";" reduce using rule 275 (expr-or-braced-init-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 braced-init-list go to state 1179 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expr-or-braced-init-list go to state 1180 expr-or-braced-init-list-opt go to state 1190 expression go to state 1182 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1103

375 jump-statement"goto" IDENTIFIER ";" IDENTIFIER shift, and go to state 1191

State 1104

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 1192 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 1105

3 CONSTEXPR-opt %empty ["("] 4 | "constexpr" 17 NOT-opt %empty ["consteval"] 18 | "!" 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 630 | "if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "constexpr" shift, and go to state 1193 "!" shift, and go to state 1194 "consteval" reduce using rule 17 (NOT-opt) $default reduce using rule 3 (CONSTEXPR-opt) CONSTEXPR-opt go to state 1195 NOT-opt go to state 1196

State 1106

632 selection-statement"switch" "(" init-statement-opt condition ")" statement "(" shift, and go to state 1197

State 1107

666 statementattribute-specifier-seq-opt compound-statement $default reduce using rule 666 (statement)

State 1108

374 jump-statementcoroutine-return-statement $default reduce using rule 374 (jump-statement)

State 1109

602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" "&" shift, and go to state 339 "&&" shift, and go to state 340 $default reduce using rule 604 (ref-qualifier-opt) ref-qualifier go to state 341 ref-qualifier-opt go to state 342

State 1110

278 expressionexpression "," assignment-expression 283 expression-optexpression [";", ")", "]"] "," shift, and go to state 534 $default reduce using rule 283 (expression-opt)

State 1111

284 expression-statementexpression-opt ";" ";" shift, and go to state 1198

State 1112

665 statementattribute-specifier-seq-opt expression-statement $default reduce using rule 665 (statement)

State 1113

668 statementattribute-specifier-seq-opt iteration-statement $default reduce using rule 668 (statement)

State 1114

669 statementattribute-specifier-seq-opt jump-statement $default reduce using rule 669 (statement)

State 1115

667 statementattribute-specifier-seq-opt selection-statement $default reduce using rule 667 (statement)

State 1116

671 statementattribute-specifier-seq-opt try-block $default reduce using rule 671 (statement)

State 1117

673 statement-seqstatement-seq statement $default reduce using rule 673 (statement-seq)

State 1118

149 compound-statement"{" statement-seq-opt "}" $default reduce using rule 149 (compound-statement)

State 1119

157 conditional-expressionlogical-or-expression "?" expression ":" assignment-expression $default reduce using rule 157 (conditional-expression)

State 1120

460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" "}" shift, and go to state 1199

State 1121

677 static_assert-declaration"static_assert" "(" constant-expression "," string-literal ")" ";" $default reduce using rule 677 (static_assert-declaration)

State 1122

443 named-namespace-definitionINLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 443 (named-namespace-definition)

State 1123

75 attribute-listattribute-list "," attribute "..." 78 attribute-optattribute [",", "]"] "..." shift, and go to state 1200 $default reduce using rule 78 (attribute-opt)

State 1124

73 attribute-listattribute-list "," attribute-opt $default reduce using rule 73 (attribute-list)

State 1125

80 attribute-specifier"[" "[" attribute-using-prefix-opt attribute-list "]" "]" $default reduce using rule 80 (attribute-specifier)

State 1126

79 attribute-scoped-tokenattribute-namespace "::" IDENTIFIER $default reduce using rule 79 (attribute-scoped-token)

State 1127

91 balanced-token "(" balanced-token-seq-opt ")" 91 | "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty [")"] 98 | balanced-token-seq "(" shift, and go to state 1127 "[" shift, and go to state 1128 "{" shift, and go to state 1129 BALANCED_TOKEN shift, and go to state 1130 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1131 balanced-token-seq go to state 1132 balanced-token-seq-opt go to state 1201

State 1128

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["]"] 98 | balanced-token-seq "(" shift, and go to state 1127 "[" shift, and go to state 1128 "{" shift, and go to state 1129 BALANCED_TOKEN shift, and go to state 1130 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1131 balanced-token-seq go to state 1132 balanced-token-seq-opt go to state 1202

State 1129

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 95 balanced-token-seq balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt %empty ["}"] 98 | balanced-token-seq "(" shift, and go to state 1127 "[" shift, and go to state 1128 "{" shift, and go to state 1129 BALANCED_TOKEN shift, and go to state 1130 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1131 balanced-token-seq go to state 1132 balanced-token-seq-opt go to state 1203

State 1130

94 balanced-tokenBALANCED_TOKEN $default reduce using rule 94 (balanced-token)

State 1131

95 balanced-token-seqbalanced-token $default reduce using rule 95 (balanced-token-seq)

State 1132

91 balanced-token "(" balanced-token-seq-opt ")" 92 | "[" balanced-token-seq-opt "]" 93 | "{" balanced-token-seq-opt "}" 94 | BALANCED_TOKEN 96 balanced-token-seqbalanced-token-seq balanced-token 98 balanced-token-seq-optbalanced-token-seq [")", "]", "}"] "(" shift, and go to state 1127 "[" shift, and go to state 1128 "{" shift, and go to state 1129 BALANCED_TOKEN shift, and go to state 1130 $default reduce using rule 98 (balanced-token-seq-opt) balanced-token go to state 1204

State 1133

68 attribute-argument-clause"(" balanced-token-seq-opt ")" ")" shift, and go to state 1205

State 1134

343 identifier-listidentifier-list "," IDENTIFIER $default reduce using rule 343 (identifier-list)

State 1135

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" ";" shift, and go to state 1206

State 1136

326 function-body"=" "delete" ";" $default reduce using rule 326 (function-body)

State 1137

325 function-body"=" "default" ";" $default reduce using rule 325 (function-body)

State 1138

402 mem-initializer-listmem-initializer ELLIPSIS-opt $default reduce using rule 402 (mem-initializer-list)

State 1139

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 279 expression-list initializer-list 280 expression-list-opt %empty [")"] 281 | expression-list 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 361 initializer-clause assignment-expression 362 | braced-init-list 363 initializer-list initializer-clause ELLIPSIS-opt 364 | initializer-list "," initializer-clause ELLIPSIS-opt 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 398 mem-initializermem-initializer-id "(" expression-list-opt ")" 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 280 (expression-list-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 642 await-expression go to state 269 braced-init-list go to state 643 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression-list go to state 810 expression-list-opt go to state 1207 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 initializer-clause go to state 646 initializer-list go to state 647 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1140

399 mem-initializermem-initializer-id braced-init-list $default reduce using rule 399 (mem-initializer)

State 1141

137 class-name IDENTIFIER 138 | simple-template-id 139 class-or-decltype nested-name-specifier-opt type-name 140 | nested-name-specifier "template" simple-template-id 141 | decltype-specifier 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 398 mem-initializer mem-initializer-id "(" expression-list-opt ")" 399 | mem-initializer-id braced-init-list 400 mem-initializer-id class-or-decltype 401 | IDENTIFIER 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 1010 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1011 decltype-specifier go to state 874 enum-name go to state 71 mem-initializer go to state 1208 mem-initializer-id go to state 1013 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 875 nested-name-specifier-opt go to state 876 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1142

331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq 335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt "catch" shift, and go to state 1209 handler go to state 1210 handler-seq go to state 1211

State 1143

478 noexcept-specifier "noexcept" "(" constant-expression ")" 479 | "noexcept" 480 noexcept-specifier-opt %empty [",", "...", "=", ";", "alignas", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] 481 | noexcept-specifier 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt "noexcept" shift, and go to state 791 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 792 noexcept-specifier-opt go to state 1212

State 1144

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 1213 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 1145

325 function-body"=" "default" ";" 326 | "=" "delete" ";" 597 pure-specifier"=" '0' "delete" shift, and go to state 1008 "default" shift, and go to state 1009 '0' shift, and go to state 1214

State 1146

599 pure-specifier-optpure-specifier $default reduce using rule 599 (pure-specifier-opt)

State 1147

415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt $default reduce using rule 415 (member-declarator)

State 1148

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 621 requires-clause "requires" constraint-logical-or-expression 769 virt-specifier "override" 770 | "final" 771 virt-specifier-seq virt-specifier 772 | virt-specifier-seq virt-specifier 773 virt-specifier-seq-opt %empty [",", "=", ";"] 774 | virt-specifier-seq "=" shift, and go to state 378 "{" shift, and go to state 380 "final" shift, and go to state 612 "requires" shift, and go to state 381 "override" shift, and go to state 613 "," reduce using rule 118 (brace-or-equal-initializer-opt) "," [reduce using rule 773 (virt-specifier-seq-opt)] "=" [reduce using rule 773 (virt-specifier-seq-opt)] ";" reduce using rule 118 (brace-or-equal-initializer-opt) ";" [reduce using rule 773 (virt-specifier-seq-opt)] $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1022 brace-or-equal-initializer-opt go to state 1023 braced-init-list go to state 383 requires-clause go to state 1215 virt-specifier go to state 615 virt-specifier-seq go to state 616 virt-specifier-seq-opt go to state 1216

State 1149

420 member-declarator-listmember-declarator-list "," member-declarator $default reduce using rule 420 (member-declarator-list)

State 1150

103 base-specifierattribute-specifier-seq-opt "virtual" access-specifier-opt class-or-decltype $default reduce using rule 103 (base-specifier)

State 1151

104 base-specifierattribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype $default reduce using rule 104 (base-specifier)

State 1152

140 class-or-decltypenested-name-specifier "template" simple-template-id $default reduce using rule 140 (class-or-decltype)

State 1153

106 base-specifier-listbase-specifier-list "," base-specifier ELLIPSIS-opt $default reduce using rule 106 (base-specifier-list)

State 1154

364 initializer-listinitializer-list "," initializer-clause ELLIPSIS-opt $default reduce using rule 364 (initializer-list)

State 1155

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" ";" shift, and go to state 1217

State 1156

427 module-declarationEXPORT-opt "module" module-name module-partition-opt attribute-specifier-seq-opt ";" $default reduce using rule 427 (module-declaration)

State 1157

9 EXTERN-opt %empty ["template"] 10 | "extern" 13 INLINE-opt %empty ["namespace"] 14 | "inline" 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 71 attribute-declaration attribute-specifier-seq ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "...", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "using", "alignas", "(", "&", "asm", "[", "class", "struct", "union", "&&", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "*", "~", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 193 declaration block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq declaration 207 | declaration-seq declaration 208 declaration-seq-opt %empty [$end] 209 | declaration-seq 214 decltype-specifier "decltype" "(" expression ")" 215 deduction-guide explicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration ";" 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 264 explicit-instantiation EXTERN-opt "template" declaration 265 explicit-specialization "template" "<" ">" declaration 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 268 explicit-specifier-opt %empty [IDENTIFIER] 269 | explicit-specifier 270 export-declaration "export" declaration 271 | "export" "{" declaration-seq-opt "}" 272 | "export" module-import-declaration 327 function-definition attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier "virtual" 330 | explicit-specifier 390 linkage-specification "extern" string-literal "{" declaration-seq-opt "}" 391 | "extern" string-literal declaration 428 module-import-declaration "import" module-name attribute-specifier-seq-opt ";" 429 | "import" module-partition attribute-specifier-seq-opt ";" 430 | "import" header-name attribute-specifier-seq-opt ";" 443 named-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt IDENTIFIER "{" namespace-body "}" 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 447 namespace-definition named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 460 nested-namespace-definition "namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" 476 nodeclspec-function-declaration attribute-specifier-seq-opt declarator ";" 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 690 template-declaration template-head declaration 691 | template-head concept-definition 692 template-head "template" "<" template-parameter-list ">" requires-clause-opt 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 754 unnamed-namespace-definition INLINE-opt "namespace" attribute-specifier-seq-opt "{" namespace-body "}" 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "export" shift, and go to state 2 "extern" shift, and go to state 3 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 5 "::" shift, and go to state 6 "template" shift, and go to state 7 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 ";" shift, and go to state 11 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "import" shift, and go to state 25 "namespace" shift, and go to state 26 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "template" [reduce using rule 9 (EXTERN-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "namespace" [reduce using rule 13 (INLINE-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 1218 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1158

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1219

State 1159

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1220

State 1160

546 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt "=" initializer-clause $default reduce using rule 546 (parameter-declaration)

State 1161

544 parameter-declarationattribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator "=" initializer-clause $default reduce using rule 544 (parameter-declaration)

State 1162

287 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" ")" shift, and go to state 1221

State 1163

724 type-requirement"typename" nested-name-specifier-opt type-name ";" ";" shift, and go to state 1222

State 1164

15 NOEXCEPT-opt %empty [";", "->"] 16 | "noexcept" 148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" "noexcept" shift, and go to state 1223 $default reduce using rule 15 (NOEXCEPT-opt) NOEXCEPT-opt go to state 1224

State 1165

461 nested-requirement"requires" constraint-expression ";" $default reduce using rule 461 (nested-requirement)

State 1166

278 expressionexpression "," assignment-expression 570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 1225

State 1167

278 expressionexpression "," assignment-expression 571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 1226

State 1168

278 expressionexpression "," assignment-expression 572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 1227

State 1169

278 expressionexpression "," assignment-expression 573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" "," shift, and go to state 534 ")" shift, and go to state 1228

State 1170

120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 468 new-initializer "(" expression-list-opt ")" 469 | braced-init-list 470 new-initializer-opt %empty [",", "...", "+", "-", "=", ";", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] 471 | new-initializer "(" shift, and go to state 1077 "{" shift, and go to state 380 "{" [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1078 new-initializer go to state 1079 new-initializer-opt go to state 1229

State 1171

468 new-initializer"(" expression-list-opt ")" ")" shift, and go to state 1230

State 1172

494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt "]" shift, and go to state 1231

State 1173

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 158 constant-expression conditional-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 309 constant-expression go to state 1232 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 311 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306

State 1174

462 new-declaratorptr-operator new-declarator-opt $default reduce using rule 462 (new-declarator)

State 1175

385 lambda-declarator"(" parameter-declaration-clause ")" lambda-specifiers requires-clause-opt $default reduce using rule 385 (lambda-declarator)

State 1176

149 compound-statement "{" statement-seq-opt "}" 387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement "{" shift, and go to state 794 compound-statement go to state 1233

State 1177

478 noexcept-specifier"noexcept" "(" constant-expression ")" $default reduce using rule 478 (noexcept-specifier)

State 1178

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 376 | attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1234 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1179

274 expr-or-braced-init-listbraced-init-list $default reduce using rule 274 (expr-or-braced-init-list)

State 1180

276 expr-or-braced-init-list-optexpr-or-braced-init-list $default reduce using rule 276 (expr-or-braced-init-list-opt)

State 1181

171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1235

State 1182

273 expr-or-braced-init-listexpression [";", ")"] 278 expressionexpression "," assignment-expression "," shift, and go to state 534 $default reduce using rule 273 (expr-or-braced-init-list)

State 1183

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1236 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1184

335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt 707 try-block"try" compound-statement handler-seq "catch" shift, and go to state 1209 handler go to state 1210 handler-seq go to state 1237

State 1185

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 367 iteration-statement"while" "(" condition ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1238 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 condition go to state 1239 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1240 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1186

368 iteration-statement"do" statement "while" "(" expression ")" ";" "while" shift, and go to state 1241

State 1187

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 358 | init-statement 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 370 | "for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1242 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 alias-declaration go to state 1243 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 1244 await-expression go to state 269 cast-expression go to state 270 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 275 exclusive-or-expression go to state 276 explicit-specifier go to state 155 expression go to state 1110 expression-opt go to state 1111 expression-statement go to state 1245 fold-expression go to state 278 function-specifier go to state 79 id-expression go to state 279 inclusive-or-expression go to state 280 init-statement go to state 1246 init-statement-opt go to state 1247 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-declaration go to state 1248 simple-template-id go to state 298 simple-type-specifier go to state 409 storage-class-specifier go to state 99 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1188

371 jump-statement"break" ";" $default reduce using rule 371 (jump-statement)

State 1189

372 jump-statement"continue" ";" $default reduce using rule 372 (jump-statement)

State 1190

373 jump-statement"return" expr-or-braced-init-list-opt ";" ";" shift, and go to state 1249

State 1191

375 jump-statement"goto" IDENTIFIER ";" ";" shift, and go to state 1250

State 1192

377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement ":" shift, and go to state 1251

State 1193

4 CONSTEXPR-opt"constexpr" $default reduce using rule 4 (CONSTEXPR-opt)

State 1194

18 NOT-opt"!" $default reduce using rule 18 (NOT-opt)

State 1195

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "(" shift, and go to state 1252

State 1196

630 selection-statement"if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "consteval" shift, and go to state 1253

State 1197

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 358 | init-statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1242 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "noexcept" [reduce using rule 357 (init-statement-opt)] "!" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "this" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] "+" [reduce using rule 357 (init-statement-opt)] "-" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "(" [reduce using rule 357 (init-statement-opt)] "&" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "co_await" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "operator" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 357 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "*" [reduce using rule 357 (init-statement-opt)] "requires" [reduce using rule 357 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 357 (init-statement-opt)] "~" [reduce using rule 357 (init-statement-opt)] "++" [reduce using rule 357 (init-statement-opt)] "--" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "dynamic_cast" [reduce using rule 357 (init-statement-opt)] "static_cast" [reduce using rule 357 (init-statement-opt)] "reinterpret_cast" [reduce using rule 357 (init-statement-opt)] "const_cast" [reduce using rule 357 (init-statement-opt)] "typeid" [reduce using rule 357 (init-statement-opt)] "literal" [reduce using rule 357 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] STRING_LITERAL [reduce using rule 357 (init-statement-opt)] "throw" [reduce using rule 357 (init-statement-opt)] "sizeof" [reduce using rule 357 (init-statement-opt)] "alignof" [reduce using rule 357 (init-statement-opt)] "co_yield" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 alias-declaration go to state 1243 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 1244 await-expression go to state 269 cast-expression go to state 270 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 275 exclusive-or-expression go to state 276 explicit-specifier go to state 155 expression go to state 1110 expression-opt go to state 1111 expression-statement go to state 1245 fold-expression go to state 278 function-specifier go to state 79 id-expression go to state 279 inclusive-or-expression go to state 280 init-statement go to state 1254 init-statement-opt go to state 1255 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-declaration go to state 1248 simple-template-id go to state 298 simple-type-specifier go to state 409 storage-class-specifier go to state 99 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1198

284 expression-statementexpression-opt ";" $default reduce using rule 284 (expression-statement)

State 1199

460 nested-namespace-definition"namespace" enclosing-namespace-specifier "::" INLINE-opt IDENTIFIER "{" namespace-body "}" $default reduce using rule 460 (nested-namespace-definition)

State 1200

75 attribute-listattribute-list "," attribute "..." $default reduce using rule 75 (attribute-list)

State 1201

91 balanced-token"(" balanced-token-seq-opt ")" ")" shift, and go to state 1256

State 1202

92 balanced-token"[" balanced-token-seq-opt "]" "]" shift, and go to state 1257

State 1203

93 balanced-token"{" balanced-token-seq-opt "}" "}" shift, and go to state 1258

State 1204

96 balanced-token-seqbalanced-token-seq balanced-token $default reduce using rule 96 (balanced-token-seq)

State 1205

68 attribute-argument-clause"(" balanced-token-seq-opt ")" $default reduce using rule 68 (attribute-argument-clause)

State 1206

642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" $default reduce using rule 642 (simple-declaration)

State 1207

398 mem-initializermem-initializer-id "(" expression-list-opt ")" ")" shift, and go to state 1259

State 1208

5 ELLIPSIS-opt %empty [",", "{"] 6 | "..." 403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt "..." shift, and go to state 156 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1260

State 1209

335 handler"catch" "(" exception-declaration ")" compound-statement "(" shift, and go to state 1261

State 1210

335 handler "catch" "(" exception-declaration ")" compound-statement 336 handler-seq handler handler-seq-opt 336 | handler handler-seq-opt 337 handler-seq-opt %empty [$end, "constexpr", "...", "export", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "template", "this", "typename", "virtual", "private", "protected", "public", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", ":", "co_await", "{", "}", "class", "struct", "union", "&&", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "module", "while", "do", "for", "break", "continue", "return", "goto", "case", "import", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 338 | handler-seq "catch" shift, and go to state 1209 $default reduce using rule 337 (handler-seq-opt) handler go to state 1210 handler-seq go to state 1262 handler-seq-opt go to state 1263

State 1211

331 function-try-block"try" ctor-initializer-opt compound-statement handler-seq $default reduce using rule 331 (function-try-block)

State 1212

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1264

State 1213

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt %empty [",", ";"] 119 | brace-or-equal-initializer 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt "=" shift, and go to state 378 "{" shift, and go to state 380 $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1022 brace-or-equal-initializer-opt go to state 1265 braced-init-list go to state 383

State 1214

597 pure-specifier"=" '0' $default reduce using rule 597 (pure-specifier)

State 1215

416 member-declaratordeclarator requires-clause $default reduce using rule 416 (member-declarator)

State 1216

415 member-declaratordeclarator virt-specifier-seq-opt pure-specifier-opt 597 pure-specifier "=" '0' 598 pure-specifier-opt %empty [",", ";"] 599 | pure-specifier "=" shift, and go to state 1266 $default reduce using rule 598 (pure-specifier-opt) pure-specifier go to state 1146 pure-specifier-opt go to state 1147

State 1217

215 deduction-guideexplicit-specifier-opt template-name "(" parameter-declaration-clause ")" "->" simple-template-id ";" $default reduce using rule 215 (deduction-guide)

State 1218

584 private-module-fragment"module" ":" "private" ";" declaration-seq-opt $default reduce using rule 584 (private-module-fragment)

State 1219

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 483 noptr-abstract-declaratornoptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 483 (noptr-abstract-declarator)] $default reduce using rule 483 (noptr-abstract-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1220

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 488 noptr-abstract-pack-declaratornoptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 488 (noptr-abstract-pack-declarator)] $default reduce using rule 488 (noptr-abstract-pack-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1221

287 fold-expression"(" cast-expression fold-operator "..." fold-operator cast-expression ")" $default reduce using rule 287 (fold-expression)

State 1222

724 type-requirement"typename" nested-name-specifier-opt type-name ";" $default reduce using rule 724 (type-requirement)

State 1223

16 NOEXCEPT-opt"noexcept" $default reduce using rule 16 (NOEXCEPT-opt)

State 1224

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" 625 return-type-requirement "->" type-constraint 626 return-type-requirement-opt %empty [";"] 627 | return-type-requirement "->" shift, and go to state 1267 $default reduce using rule 626 (return-type-requirement-opt) return-type-requirement go to state 1268 return-type-requirement-opt go to state 1269

State 1225

570 postfix-expression"dynamic_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 570 (postfix-expression)

State 1226

571 postfix-expression"static_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 571 (postfix-expression)

State 1227

572 postfix-expression"reinterpret_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 572 (postfix-expression)

State 1228

573 postfix-expression"const_cast" "<" type-id ">" "(" expression ")" $default reduce using rule 573 (postfix-expression)

State 1229

467 new-expressionSCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt $default reduce using rule 467 (new-expression)

State 1230

468 new-initializer"(" expression-list-opt ")" $default reduce using rule 468 (new-initializer)

State 1231

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1270

State 1232

495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt "]" shift, and go to state 1271

State 1233

387 lambda-expressionlambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement $default reduce using rule 387 (lambda-expression)

State 1234

376 labeled-statementattribute-specifier-seq-opt IDENTIFIER ":" statement $default reduce using rule 376 (labeled-statement)

State 1235

171 coroutine-return-statement"co_return" expr-or-braced-init-list-opt ";" $default reduce using rule 171 (coroutine-return-statement)

State 1236

378 labeled-statementattribute-specifier-seq-opt "default" ":" statement $default reduce using rule 378 (labeled-statement)

State 1237

707 try-block"try" compound-statement handler-seq $default reduce using rule 707 (try-block)

State 1238

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1272 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1239

367 iteration-statement"while" "(" condition ")" statement ")" shift, and go to state 1273

State 1240

152 conditionexpression [";", ")"] 278 expressionexpression "," assignment-expression "," shift, and go to state 534 $default reduce using rule 152 (condition)

State 1241

368 iteration-statement"do" statement "while" "(" expression ")" ";" "(" shift, and go to state 1274

State 1242

44 alias-declaration"using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" IDENTIFIER shift, and go to state 123

State 1243

356 init-statementalias-declaration $default reduce using rule 356 (init-statement)

State 1244

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 642 simple-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1109 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1245

354 init-statementexpression-statement $default reduce using rule 354 (init-statement)

State 1246

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt %empty [";"] 155 | condition 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 358 init-statement-optinit-statement ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 "constexpr" reduce using rule 83 (attribute-specifier-seq-opt) "constexpr" [reduce using rule 358 (init-statement-opt)] "extern" reduce using rule 83 (attribute-specifier-seq-opt) "extern" [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" reduce using rule 83 (attribute-specifier-seq-opt) "inline" [reduce using rule 358 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 358 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 358 (init-statement-opt)] "virtual" reduce using rule 83 (attribute-specifier-seq-opt) "virtual" [reduce using rule 358 (init-statement-opt)] ";" reduce using rule 154 (condition-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 358 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 358 (init-statement-opt)] "class" reduce using rule 83 (attribute-specifier-seq-opt) "class" [reduce using rule 358 (init-statement-opt)] "struct" reduce using rule 83 (attribute-specifier-seq-opt) "struct" [reduce using rule 358 (init-statement-opt)] "union" reduce using rule 83 (attribute-specifier-seq-opt) "union" [reduce using rule 358 (init-statement-opt)] "const" reduce using rule 83 (attribute-specifier-seq-opt) "const" [reduce using rule 358 (init-statement-opt)] "volatile" reduce using rule 83 (attribute-specifier-seq-opt) "volatile" [reduce using rule 358 (init-statement-opt)] "friend" reduce using rule 83 (attribute-specifier-seq-opt) "friend" [reduce using rule 358 (init-statement-opt)] "typedef" reduce using rule 83 (attribute-specifier-seq-opt) "typedef" [reduce using rule 358 (init-statement-opt)] "consteval" reduce using rule 83 (attribute-specifier-seq-opt) "consteval" [reduce using rule 358 (init-statement-opt)] "constinit" reduce using rule 83 (attribute-specifier-seq-opt) "constinit" [reduce using rule 358 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 358 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "enum" reduce using rule 83 (attribute-specifier-seq-opt) "enum" [reduce using rule 358 (init-statement-opt)] "explicit" reduce using rule 83 (attribute-specifier-seq-opt) "explicit" [reduce using rule 358 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 358 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 358 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 358 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 358 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 358 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 358 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 358 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 358 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 358 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 358 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 358 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 358 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 358 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 358 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 358 (init-statement-opt)] "static" reduce using rule 83 (attribute-specifier-seq-opt) "static" [reduce using rule 358 (init-statement-opt)] "thread_local" reduce using rule 83 (attribute-specifier-seq-opt) "thread_local" [reduce using rule 358 (init-statement-opt)] "mutable" reduce using rule 83 (attribute-specifier-seq-opt) "mutable" [reduce using rule 358 (init-statement-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1238 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 condition go to state 1275 condition-opt go to state 1276 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1240 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1247

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 320 for-range-declaration attribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1277 for-range-declaration go to state 1278

State 1248

355 init-statementsimple-declaration $default reduce using rule 355 (init-statement)

State 1249

373 jump-statement"return" expr-or-braced-init-list-opt ";" $default reduce using rule 373 (jump-statement)

State 1250

375 jump-statement"goto" IDENTIFIER ";" $default reduce using rule 375 (jump-statement)

State 1251

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1279 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1252

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [";"] 283 | expression 284 expression-statement expression-opt ";" 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 329 function-specifier "virtual" 330 | explicit-specifier 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 354 init-statement expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "alignas", "(", "&", "[", "co_await", "class", "struct", "union", "operator", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 358 | init-statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 238 "inline" shift, and go to state 151 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "+" shift, and go to state 243 "-" shift, and go to state 244 "using" shift, and go to state 1242 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "operator" shift, and go to state 249 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "constexpr" [reduce using rule 357 (init-statement-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "inline" [reduce using rule 357 (init-statement-opt)] "noexcept" [reduce using rule 357 (init-statement-opt)] "!" [reduce using rule 357 (init-statement-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 357 (init-statement-opt)] "this" [reduce using rule 357 (init-statement-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 357 (init-statement-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 357 (init-statement-opt)] "+" [reduce using rule 357 (init-statement-opt)] "-" [reduce using rule 357 (init-statement-opt)] ";" reduce using rule 282 (expression-opt) "alignas" reduce using rule 83 (attribute-specifier-seq-opt) "alignas" [reduce using rule 357 (init-statement-opt)] "(" [reduce using rule 357 (init-statement-opt)] "&" [reduce using rule 357 (init-statement-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 357 (init-statement-opt)] "co_await" [reduce using rule 357 (init-statement-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 357 (init-statement-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 357 (init-statement-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 357 (init-statement-opt)] "operator" [reduce using rule 357 (init-statement-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 357 (init-statement-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 357 (init-statement-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 357 (init-statement-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 357 (init-statement-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 357 (init-statement-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 357 (init-statement-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "delete" [reduce using rule 357 (init-statement-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "enum" [reduce using rule 357 (init-statement-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 357 (init-statement-opt)] "*" [reduce using rule 357 (init-statement-opt)] "requires" [reduce using rule 357 (init-statement-opt)] "new" reduce using rule 19 (SCOPE-opt) "new" [reduce using rule 357 (init-statement-opt)] "~" [reduce using rule 357 (init-statement-opt)] "++" [reduce using rule 357 (init-statement-opt)] "--" [reduce using rule 357 (init-statement-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 357 (init-statement-opt)] "auto" [reduce using rule 710 (type-constraint-opt)] "dynamic_cast" [reduce using rule 357 (init-statement-opt)] "static_cast" [reduce using rule 357 (init-statement-opt)] "reinterpret_cast" [reduce using rule 357 (init-statement-opt)] "const_cast" [reduce using rule 357 (init-statement-opt)] "typeid" [reduce using rule 357 (init-statement-opt)] "literal" [reduce using rule 357 (init-statement-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char" [reduce using rule 357 (init-statement-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 357 (init-statement-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 357 (init-statement-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 357 (init-statement-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 357 (init-statement-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 357 (init-statement-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 357 (init-statement-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 357 (init-statement-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 357 (init-statement-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 357 (init-statement-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 357 (init-statement-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 357 (init-statement-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 357 (init-statement-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 357 (init-statement-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 357 (init-statement-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 357 (init-statement-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 357 (init-statement-opt)] STRING_LITERAL [reduce using rule 357 (init-statement-opt)] "throw" [reduce using rule 357 (init-statement-opt)] "sizeof" [reduce using rule 357 (init-statement-opt)] "alignof" [reduce using rule 357 (init-statement-opt)] "co_yield" [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 alias-declaration go to state 1243 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 1244 await-expression go to state 269 cast-expression go to state 270 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 274 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 275 exclusive-or-expression go to state 276 explicit-specifier go to state 155 expression go to state 1110 expression-opt go to state 1111 expression-statement go to state 1245 fold-expression go to state 278 function-specifier go to state 79 id-expression go to state 279 inclusive-or-expression go to state 280 init-statement go to state 1254 init-statement-opt go to state 1280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-declaration go to state 1248 simple-template-id go to state 298 simple-type-specifier go to state 409 storage-class-specifier go to state 99 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 416 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1253

149 compound-statement "{" statement-seq-opt "}" 630 selection-statement"if" NOT-opt "consteval" compound-statement 631 | "if" NOT-opt "consteval" compound-statement "else" statement "{" shift, and go to state 794 compound-statement go to state 1281

State 1254

358 init-statement-optinit-statement $default reduce using rule 358 (init-statement-opt)

State 1255

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1238 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 condition go to state 1282 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1240 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1256

91 balanced-token"(" balanced-token-seq-opt ")" $default reduce using rule 91 (balanced-token)

State 1257

92 balanced-token"[" balanced-token-seq-opt "]" $default reduce using rule 92 (balanced-token)

State 1258

93 balanced-token"{" balanced-token-seq-opt "}" $default reduce using rule 93 (balanced-token)

State 1259

398 mem-initializermem-initializer-id "(" expression-list-opt ")" $default reduce using rule 398 (mem-initializer)

State 1260

403 mem-initializer-listmem-initializer-list "," mem-initializer ELLIPSIS-opt $default reduce using rule 403 (mem-initializer-list)

State 1261

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty [IDENTIFIER, "::", "typename", "alignas", "[", "class", "struct", "union", "const", "volatile", "decltype", "enum", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void"] 84 | attribute-specifier-seq 259 exception-declaration attribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | "..." 335 handler"catch" "(" exception-declaration ")" compound-statement "..." shift, and go to state 1283 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1284 exception-declaration go to state 1285

State 1262

338 handler-seq-opthandler-seq $default reduce using rule 338 (handler-seq-opt)

State 1263

336 handler-seqhandler handler-seq-opt $default reduce using rule 336 (handler-seq)

State 1264

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 553 parameters-and-qualifiers"(" parameter-declaration-clause ")" cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt [",", "...", "=", ";", "(", ")", "[", ":", "{", "final", "->", ">", "try", "requires", "override"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 553 (parameters-and-qualifiers)] $default reduce using rule 553 (parameters-and-qualifiers) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1265

418 member-declaratorIDENTIFIER-opt attribute-specifier-seq-opt ":" constant-expression brace-or-equal-initializer-opt $default reduce using rule 418 (member-declarator)

State 1266

597 pure-specifier"=" '0' '0' shift, and go to state 1214

State 1267

137 class-name IDENTIFIER 138 | simple-template-id 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 625 return-type-requirement"->" type-constraint 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "decltype" shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 133 nested-name-specifier-opt go to state 221 simple-template-id go to state 96 template-name go to state 102 type-constraint go to state 1286 type-name go to state 106 typedef-name go to state 108

State 1268

627 return-type-requirement-optreturn-type-requirement $default reduce using rule 627 (return-type-requirement-opt)

State 1269

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" ";" shift, and go to state 1287

State 1270

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 494 noptr-new-declarator"[" expression-opt "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 494 (noptr-new-declarator)] $default reduce using rule 494 (noptr-new-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1271

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty 84 | attribute-specifier-seq 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1288

State 1272

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 1289 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1273

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 367 iteration-statement"while" "(" condition ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1290 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1274

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 368 iteration-statement"do" statement "while" "(" expression ")" ";" 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1291 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1275

155 condition-optcondition $default reduce using rule 155 (condition-opt)

State 1276

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ";" shift, and go to state 1292

State 1277

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 329 function-specifier "virtual" 330 | explicit-specifier 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1293 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 154 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109

State 1278

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ":" shift, and go to state 1294

State 1279

377 labeled-statementattribute-specifier-seq-opt "case" constant-expression ":" statement $default reduce using rule 377 (labeled-statement)

State 1280

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "::", "typename", "virtual", "alignas", "[", "class", "struct", "union", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "enum", "explicit", "auto", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable"] 84 | attribute-specifier-seq 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 152 condition expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "[" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "delete" reduce using rule 19 (SCOPE-opt) "new" reduce using rule 19 (SCOPE-opt) "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 1238 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 condition go to state 1295 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1240 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1281

630 selection-statement"if" NOT-opt "consteval" compound-statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 631 | "if" NOT-opt "consteval" compound-statement "else" statement "else" shift, and go to state 1296 "else" [reduce using rule 630 (selection-statement)] $default reduce using rule 630 (selection-statement)

State 1282

632 selection-statement"switch" "(" init-statement-opt condition ")" statement ")" shift, and go to state 1297

State 1283

261 exception-declaration"..." $default reduce using rule 261 (exception-declaration)

State 1284

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 175 cv-qualifier "const" 176 | "volatile" 214 decltype-specifier "decltype" "(" expression ")" 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 246 enum-name IDENTIFIER 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 729 type-specifier-seq type-specifier attribute-specifier-seq-opt 730 | type-specifier type-specifier-seq 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "typename" shift, and go to state 8 "alignas" shift, and go to state 158 "[" shift, and go to state 162 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "decltype" shift, and go to state 21 "enum" shift, and go to state 125 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] $default reduce using rule 710 (type-constraint-opt) alignment-specifier go to state 166 attribute-specifier go to state 167 class-key go to state 406 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 414 type-specifier-seq go to state 1298 typedef-name go to state 108 typename-specifier go to state 109

State 1285

335 handler"catch" "(" exception-declaration ")" compound-statement ")" shift, and go to state 1299

State 1286

625 return-type-requirement"->" type-constraint $default reduce using rule 625 (return-type-requirement)

State 1287

148 compound-requirement"{" expression "}" NOEXCEPT-opt return-type-requirement-opt ";" $default reduce using rule 148 (compound-requirement)

State 1288

45 alignment-specifier "alignas" "(" type-id ELLIPSIS-opt ")" 46 | "alignas" "(" constant-expression ELLIPSIS-opt ")" 80 attribute-specifier "[" "[" attribute-using-prefix-opt attribute-list "]" "]" 81 | alignment-specifier 82 attribute-specifier-seqattribute-specifier-seq-opt attribute-specifier 495 noptr-new-declaratornoptr-new-declarator "[" constant-expression "]" attribute-specifier-seq-opt [",", "...", "+", "-", "=", ";", "(", ")", "&", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", "[", "]", ":", "{", "}", "<=>", "?", "&&", "||", "==", "!=", "^", "<", ">", "*", "/", "%", "|", "<<", ">>", "<=", ">=", ".*", "->*"] "alignas" shift, and go to state 158 "[" shift, and go to state 162 "[" [reduce using rule 495 (noptr-new-declarator)] $default reduce using rule 495 (noptr-new-declarator) alignment-specifier go to state 166 attribute-specifier go to state 167

State 1289

116 brace-or-equal-initializer "=" initializer-clause 117 | braced-init-list 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer "=" shift, and go to state 378 "{" shift, and go to state 380 brace-or-equal-initializer go to state 1300 braced-init-list go to state 383

State 1290

367 iteration-statement"while" "(" condition ")" statement $default reduce using rule 367 (iteration-statement)

State 1291

278 expressionexpression "," assignment-expression 368 iteration-statement"do" statement "while" "(" expression ")" ";" "," shift, and go to state 534 ")" shift, and go to state 1301

State 1292

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 277 expression assignment-expression 278 | expression "," assignment-expression 282 expression-opt %empty [")"] 283 | expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] ")" reduce using rule 282 (expression-opt) "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expression go to state 1110 expression-opt go to state 1302 fold-expression go to state 278 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1293

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 602 ref-qualifier "&" 603 | "&&" 604 ref-qualifier-opt %empty ["["] 605 | ref-qualifier 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 156 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 159 "&" shift, and go to state 1303 "&&" shift, and go to state 1304 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "[" reduce using rule 604 (ref-qualifier-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 class-name go to state 55 declarator go to state 1305 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-declarator go to state 173 ptr-declarator go to state 174 ptr-operator go to state 175 ref-qualifier go to state 341 ref-qualifier-opt go to state 1306 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1294

19 SCOPE-opt %empty ["delete", "new"] 20 | "::" 41 additive-expression multiplicative-expression 42 | additive-expression "+" multiplicative-expression 43 | additive-expression "-" multiplicative-expression 47 and-expression equality-expression 48 | and-expression "&" equality-expression 50 assignment-expression conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 90 await-expression "co_await" cast-expression 120 braced-init-list "{" initializer-list COMMA-opt "}" 121 | "{" designated-initializer-list COMMA-opt "}" 122 | "{" "}" 129 cast-expression unary-expression 130 | "(" type-id ")" cast-expression 137 class-name IDENTIFIER 138 | simple-template-id 146 compare-expression shift-expression 147 | compare-expression "<=>" shift-expression 156 conditional-expression logical-or-expression 157 | logical-or-expression "?" expression ":" assignment-expression 169 conversion-function-id "operator" conversion-type-id 214 decltype-specifier "decltype" "(" expression ")" 222 delete-expression SCOPE-opt "delete" cast-expression 223 | SCOPE-opt "delete" "[" "]" cast-expression 246 enum-name IDENTIFIER 256 equality-expression relational-expression 257 | equality-expression "==" relational-expression 258 | equality-expression "!=" relational-expression 262 exclusive-or-expression and-expression 263 | exclusive-or-expression "^" and-expression 273 expr-or-braced-init-list expression 274 | braced-init-list 277 expression assignment-expression 278 | expression "," assignment-expression 285 fold-expression "(" cast-expression fold-operator "..." ")" 286 | "(" "..." fold-operator cast-expression ")" 287 | "(" cast-expression fold-operator "..." fold-operator cast-expression ")" 322 for-range-initializer expr-or-braced-init-list 340 id-expression unqualified-id 341 | qualified-id 344 inclusive-or-expression exclusive-or-expression 345 | inclusive-or-expression "|" exclusive-or-expression 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 386 lambda-expression lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer "<" template-parameter-list ">" requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer "[" lambda-capture-opt "]" 392 literal-operator-id "operator" string-literal IDENTIFIER 393 | "operator" user-defined-string-literal 394 logical-and-expression inclusive-or-expression 395 | logical-and-expression "&&" inclusive-or-expression 396 logical-or-expression logical-and-expression 397 | logical-or-expression "||" logical-and-expression 439 multiplicative-expression pm-expression 440 | multiplicative-expression "*" pm-expression 441 | multiplicative-expression "/" pm-expression 442 | multiplicative-expression "%" pm-expression 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 466 new-expression SCOPE-opt "new" new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt "new" new-placement-opt "(" type-id ")" new-initializer-opt 477 noexcept-expression "noexcept" "(" expression ")" 497 operator-function-id "operator" overloadable-operator 498 | "operator" overloadable-operator "<" template-argument-list-opt ">" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 556 pm-expression cast-expression 557 | pm-expression ".*" cast-expression 558 | pm-expression "->*" cast-expression 559 postfix-expression primary-expression 560 | postfix-expression "[" expression-list-opt "]" 561 | postfix-expression "(" expression-list-opt ")" 562 | simple-type-specifier "(" expression-list-opt ")" 563 | typename-specifier "(" expression-list-opt ")" 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression "." TEMPLATE-opt id-expression 567 | postfix-expression "->" TEMPLATE-opt id-expression 568 | postfix-expression "++" 569 | postfix-expression "--" 570 | "dynamic_cast" "<" type-id ">" "(" expression ")" 571 | "static_cast" "<" type-id ">" "(" expression ")" 572 | "reinterpret_cast" "<" type-id ">" "(" expression ")" 573 | "const_cast" "<" type-id ">" "(" expression ")" 574 | "typeid" "(" expression ")" 575 | "typeid" "(" type-id ")" 576 primary-expression "literal" 577 | string-literal 578 | "this" 579 | "(" expression ")" 580 | id-expression 581 | lambda-expression 582 | fold-expression 583 | requires-expression 600 qualified-id nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression compare-expression 607 | relational-expression "<" compare-expression 608 | relational-expression ">" compare-expression 609 | relational-expression "<=" compare-expression 610 | relational-expression ">=" compare-expression 624 requires-expression "requires" requirement-parameter-list-opt requirement-body 633 shift-expression additive-expression 634 | shift-expression "<<" additive-expression 635 | shift-expression ">>" additive-expression 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 682 string-literal STRING_LITERAL 693 template-id simple-template-id 694 | operator-function-id "<" template-argument-list-opt ">" 695 | literal-operator-id "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 701 throw-expression "throw" assignment-expression-opt 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 736 unary-expression postfix-expression 737 | unary-operator cast-expression 738 | "++" cast-expression 739 | "--" cast-expression 740 | await-expression 741 | "sizeof" unary-expression 742 | "sizeof" "(" type-id ")" 743 | "sizeof" "..." "(" IDENTIFIER ")" 744 | "alignof" "(" type-id ")" 745 | noexcept-expression 746 | new-expression 747 | delete-expression 748 unary-operator "*" 749 | "&" 750 | "+" 751 | "-" 752 | "!" 753 | "~" 755 unqualified-id IDENTIFIER 756 | operator-function-id 757 | conversion-function-id 758 | literal-operator-id 759 | "~" type-name 760 | "~" decltype-specifier 761 | template-id 775 yield-expression "co_yield" assignment-expression 776 | "co_yield" braced-init-list IDENTIFIER shift, and go to state 238 "noexcept" shift, and go to state 239 "!" shift, and go to state 240 "::" shift, and go to state 241 "this" shift, and go to state 242 "typename" shift, and go to state 8 "+" shift, and go to state 243 "-" shift, and go to state 244 "(" shift, and go to state 245 "&" shift, and go to state 246 "[" shift, and go to state 247 "co_await" shift, and go to state 248 "{" shift, and go to state 380 "operator" shift, and go to state 249 "decltype" shift, and go to state 21 "*" shift, and go to state 250 "requires" shift, and go to state 251 "~" shift, and go to state 252 "++" shift, and go to state 253 "--" shift, and go to state 254 "dynamic_cast" shift, and go to state 255 "static_cast" shift, and go to state 256 "reinterpret_cast" shift, and go to state 257 "const_cast" shift, and go to state 258 "typeid" shift, and go to state 259 "literal" shift, and go to state 260 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 STRING_LITERAL shift, and go to state 118 "throw" shift, and go to state 261 "sizeof" shift, and go to state 262 "alignof" shift, and go to state 263 "co_yield" shift, and go to state 264 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "auto" reduce using rule 710 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 265 additive-expression go to state 266 and-expression go to state 267 assignment-expression go to state 268 await-expression go to state 269 braced-init-list go to state 1179 cast-expression go to state 270 class-name go to state 55 compare-expression go to state 271 conditional-expression go to state 272 conversion-function-id go to state 273 decltype-specifier go to state 63 delete-expression go to state 274 enum-name go to state 71 equality-expression go to state 275 exclusive-or-expression go to state 276 expr-or-braced-init-list go to state 1307 expression go to state 1182 fold-expression go to state 278 for-range-initializer go to state 1308 id-expression go to state 279 inclusive-or-expression go to state 280 lambda-expression go to state 281 lambda-introducer go to state 282 literal-operator-id go to state 283 logical-and-expression go to state 284 logical-or-expression go to state 285 multiplicative-expression go to state 286 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 287 nested-name-specifier-opt go to state 90 new-expression go to state 288 noexcept-expression go to state 289 operator-function-id go to state 290 placeholder-type-specifier go to state 94 pm-expression go to state 291 postfix-expression go to state 292 primary-expression go to state 293 qualified-id go to state 294 relational-expression go to state 295 requires-expression go to state 296 shift-expression go to state 297 simple-template-id go to state 298 simple-type-specifier go to state 299 string-literal go to state 300 template-id go to state 301 template-name go to state 102 throw-expression go to state 302 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 303 unary-expression go to state 304 unary-operator go to state 305 unqualified-id go to state 306 yield-expression go to state 307

State 1295

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement ")" shift, and go to state 1309

State 1296

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 631 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1310 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1297

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 632 selection-statement"switch" "(" init-statement-opt condition ")" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1311 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1298

5 ELLIPSIS-opt %empty [IDENTIFIER, "::", "operator", "decltype", "~"] 6 | "..." 29 abstract-declarator ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt %empty [")"] 33 | abstract-declarator 34 abstract-pack-declarator noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 137 class-name IDENTIFIER 138 | simple-template-id 211 declarator ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id ELLIPSIS-opt id-expression 214 decltype-specifier "decltype" "(" expression ")" 246 enum-name IDENTIFIER 259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 444 namespace-alias IDENTIFIER 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 482 noptr-abstract-declarator noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt "[" constant-expression-opt "]" attribute-specifier-seq-opt 484 | "(" ptr-abstract-declarator ")" 485 noptr-abstract-declarator-opt %empty ["(", "["] 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 489 | "..." 490 noptr-declarator declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator "[" constant-expression-opt "]" attribute-specifier-seq-opt 493 | "(" ptr-declarator ")" 587 ptr-abstract-declarator noptr-abstract-declarator 588 | ptr-operator ptr-abstract-declarator-opt 591 ptr-declarator noptr-declarator 592 | ptr-operator ptr-declarator 593 ptr-operator "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 594 | "&" attribute-specifier-seq-opt 595 | "&&" attribute-specifier-seq-opt 596 | nested-name-specifier "*" attribute-specifier-seq-opt cv-qualifier-seq-opt 644 simple-template-id template-name "<" template-argument-list-opt ">" 696 template-name IDENTIFIER 713 type-name class-name 714 | enum-name 715 | typedef-name 731 typedef-name IDENTIFIER 732 | simple-template-id "..." shift, and go to state 916 IDENTIFIER shift, and go to state 4 "::" shift, and go to state 6 "(" shift, and go to state 917 "&" shift, and go to state 160 "&&" shift, and go to state 163 "decltype" shift, and go to state 21 "*" shift, and go to state 164 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] "::" [reduce using rule 5 (ELLIPSIS-opt)] "(" [reduce using rule 485 (noptr-abstract-declarator-opt)] ")" reduce using rule 32 (abstract-declarator-opt) "[" reduce using rule 485 (noptr-abstract-declarator-opt) "decltype" [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 165 abstract-declarator go to state 684 abstract-declarator-opt go to state 1312 abstract-pack-declarator go to state 686 class-name go to state 55 declarator go to state 1313 declarator-id go to state 171 decltype-specifier go to state 121 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 187 noptr-abstract-declarator go to state 687 noptr-abstract-declarator-opt go to state 688 noptr-abstract-pack-declarator go to state 689 noptr-declarator go to state 173 ptr-abstract-declarator go to state 690 ptr-declarator go to state 174 ptr-operator go to state 920 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108

State 1299

149 compound-statement "{" statement-seq-opt "}" 335 handler"catch" "(" exception-declaration ")" compound-statement "{" shift, and go to state 794 compound-statement go to state 1314

State 1300

153 conditionattribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer $default reduce using rule 153 (condition)

State 1301

368 iteration-statement"do" statement "while" "(" expression ")" ";" ";" shift, and go to state 1315

State 1302

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement ")" shift, and go to state 1316

State 1303

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 594 ptr-operator"&" attribute-specifier-seq-opt 602 ref-qualifier"&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 602 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 331

State 1304

82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["...", IDENTIFIER, "::", "alignas", "(", "&", "[", "&&", "operator", "decltype", "*", "~"] 84 | attribute-specifier-seq 595 ptr-operator"&&" attribute-specifier-seq-opt 603 ref-qualifier"&&" ["["] "[" reduce using rule 83 (attribute-specifier-seq-opt) "[" [reduce using rule 603 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 177 attribute-specifier-seq-opt go to state 334

State 1305

320 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq declarator $default reduce using rule 320 (for-range-declaration)

State 1306

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" "[" shift, and go to state 1317

State 1307

322 for-range-initializerexpr-or-braced-init-list $default reduce using rule 322 (for-range-initializer)

State 1308

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement ")" shift, and go to state 1318

State 1309

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1319 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1310

631 selection-statement"if" NOT-opt "consteval" compound-statement "else" statement $default reduce using rule 631 (selection-statement)

State 1311

632 selection-statement"switch" "(" init-statement-opt condition ")" statement $default reduce using rule 632 (selection-statement)

State 1312

260 exception-declarationattribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt $default reduce using rule 260 (exception-declaration)

State 1313

259 exception-declarationattribute-specifier-seq-opt type-specifier-seq declarator $default reduce using rule 259 (exception-declaration)

State 1314

335 handler"catch" "(" exception-declaration ")" compound-statement $default reduce using rule 335 (handler)

State 1315

368 iteration-statement"do" statement "while" "(" expression ")" ";" $default reduce using rule 368 (iteration-statement)

State 1316

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1320 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1317

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 342 identifier-list IDENTIFIER 343 | identifier-list "," IDENTIFIER IDENTIFIER shift, and go to state 846 identifier-list go to state 1321

State 1318

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1322 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1319

628 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "}", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "namespace", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "else", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static_assert", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 629 | "if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement "else" shift, and go to state 1323 "else" [reduce using rule 628 (selection-statement)] $default reduce using rule 628 (selection-statement)

State 1320

369 iteration-statement"for" "(" init-statement condition-opt ";" expression-opt ")" statement $default reduce using rule 369 (iteration-statement)

State 1321

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" 343 identifier-listidentifier-list "," IDENTIFIER "," shift, and go to state 1006 "]" shift, and go to state 1324

State 1322

370 iteration-statement"for" "(" init-statement-opt for-range-declaration ":" for-range-initializer ")" statement $default reduce using rule 370 (iteration-statement)

State 1323

44 alias-declaration "using" IDENTIFIER attribute-specifier-seq-opt "=" defining-type-id ";" 49 asm-declaration attribute-specifier-seq-opt "asm" "(" string-literal ")" ";" 82 attribute-specifier-seq attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt %empty ["constexpr", "extern", IDENTIFIER, "inline", "noexcept", "!", "::", "this", "typename", "virtual", "+", "-", "using", ";", "alignas", "(", "&", "asm", "[", "co_await", "{", "class", "struct", "union", "operator", "co_return", "const", "volatile", "friend", "typedef", "consteval", "constinit", "decltype", "delete", "enum", "explicit", "*", "default", "try", "while", "do", "for", "break", "continue", "return", "goto", "case", "requires", "new", "~", "++", "--", "auto", "dynamic_cast", "static_cast", "reinterpret_cast", "const_cast", "typeid", "literal", "if", "switch", "char", "char8_t", "char16_t", "char32_t", "wchar_t", "bool", "short", "int", "long", "signed", "unsigned", "float", "double", "void", "static", "thread_local", "mutable", STRING_LITERAL, "throw", "sizeof", "alignof", "co_yield"] 84 | attribute-specifier-seq 107 block-declaration simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 131 class-head class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 134 class-key "class" 135 | "struct" 136 | "union" 137 class-name IDENTIFIER 138 | simple-template-id 142 class-specifier class-head "{" member-specification-opt "}" 175 cv-qualifier "const" 176 | "volatile" 180 decl-specifier storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | "friend" 184 | "typedef" 185 | "constexpr" 186 | "consteval" 187 | "constinit" 188 | "inline" 189 decl-specifier-seq decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 210 declaration-statement block-declaration 214 decltype-specifier "decltype" "(" expression ")" 217 defining-type-specifier type-specifier 218 | class-specifier 219 | enum-specifier 228 elaborated-enum-specifier "enum" nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 239 enum-head enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key "enum" 244 | "enum" "class" 245 | "enum" "struct" 246 enum-name IDENTIFIER 247 enum-specifier enum-head "{" enumerator-list-opt "}" 248 | enum-head "{" enumerator-list "," "}" 266 explicit-specifier "explicit" "(" constant-expression ")" 267 | "explicit" 329 function-specifier "virtual" 330 | explicit-specifier 376 labeled-statement attribute-specifier-seq-opt IDENTIFIER ":" statement 377 | attribute-specifier-seq-opt "case" constant-expression ":" statement 378 | attribute-specifier-seq-opt "default" ":" statement 444 namespace-alias IDENTIFIER 445 namespace-alias-definition "namespace" IDENTIFIER "=" qualified-namespace-specifier ";" 450 namespace-name IDENTIFIER 451 | namespace-alias 452 nested-name-specifier "::" 453 | type-name "::" 454 | namespace-name "::" 455 | decltype-specifier "::" 456 | nested-name-specifier IDENTIFIER "::" 457 | nested-name-specifier TEMPLATE-opt simple-template-id "::" 458 nested-name-specifier-opt %empty [IDENTIFIER] 459 | nested-name-specifier 496 opaque-enum-declaration enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt ";" 554 placeholder-type-specifier type-constraint-opt "auto" 555 | type-constraint-opt "decltype" "(" "auto" ")" 629 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement 640 simple-declaration decl-specifier-seq init-declarator-list-opt ";" 641 | attribute-specifier-seq decl-specifier-seq init-declarator-list ";" 642 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" initializer ";" 644 simple-template-id template-name "<" template-argument-list-opt ">" 645 simple-type-specifier nested-name-specifier-opt type-name 646 | nested-name-specifier "template" simple-template-id 647 | decltype-specifier 648 | placeholder-type-specifier 649 | nested-name-specifier-opt template-name 650 | "char" 651 | "char8_t" 652 | "char16_t" 653 | "char32_t" 654 | "wchar_t" 655 | "bool" 656 | "short" 657 | "int" 658 | "long" 659 | "signed" 660 | "unsigned" 661 | "float" 662 | "double" 663 | "void" 664 statement labeled-statement 665 | attribute-specifier-seq-opt expression-statement 666 | attribute-specifier-seq-opt compound-statement 667 | attribute-specifier-seq-opt selection-statement 668 | attribute-specifier-seq-opt iteration-statement 669 | attribute-specifier-seq-opt jump-statement 670 | declaration-statement 671 | attribute-specifier-seq-opt try-block 676 static_assert-declaration "static_assert" "(" constant-expression ")" ";" 677 | "static_assert" "(" constant-expression "," string-literal ")" ";" 678 storage-class-specifier "static" 679 | "thread_local" 680 | "extern" 681 | "mutable" 696 template-name IDENTIFIER 708 type-constraint nested-name-specifier-opt concept-name 709 | nested-name-specifier-opt concept-name "<" template-argument-list-opt ">" 710 type-constraint-opt %empty ["decltype", "auto"] 711 | type-constraint 713 type-name class-name 714 | enum-name 715 | typedef-name 725 type-specifier simple-type-specifier 726 | elaborated-type-specifier 727 | typename-specifier 728 | cv-qualifier 731 typedef-name IDENTIFIER 732 | simple-template-id 733 typename-specifier "typename" nested-name-specifier IDENTIFIER 734 | "typename" nested-name-specifier TEMPLATE-opt simple-template-id 763 using-declaration "using" using-declarator-list ";" 767 using-directive attribute-specifier-seq-opt "using" "namespace" nested-name-specifier-opt namespace-name ";" 768 using-enum-declaration "using" elaborated-enum-specifier ";" "constexpr" shift, and go to state 1 "extern" shift, and go to state 150 IDENTIFIER shift, and go to state 4 "inline" shift, and go to state 151 "::" shift, and go to state 6 "typename" shift, and go to state 8 "virtual" shift, and go to state 9 "using" shift, and go to state 10 "class" shift, and go to state 12 "struct" shift, and go to state 13 "union" shift, and go to state 14 "const" shift, and go to state 15 "volatile" shift, and go to state 16 "friend" shift, and go to state 17 "typedef" shift, and go to state 18 "consteval" shift, and go to state 19 "constinit" shift, and go to state 20 "decltype" shift, and go to state 21 "enum" shift, and go to state 22 "explicit" shift, and go to state 23 "namespace" shift, and go to state 972 "char" shift, and go to state 27 "char8_t" shift, and go to state 28 "char16_t" shift, and go to state 29 "char32_t" shift, and go to state 30 "wchar_t" shift, and go to state 31 "bool" shift, and go to state 32 "short" shift, and go to state 33 "int" shift, and go to state 34 "long" shift, and go to state 35 "signed" shift, and go to state 36 "unsigned" shift, and go to state 37 "float" shift, and go to state 38 "double" shift, and go to state 39 "void" shift, and go to state 40 "static_assert" shift, and go to state 41 "static" shift, and go to state 42 "thread_local" shift, and go to state 43 "mutable" shift, and go to state 44 "constexpr" [reduce using rule 83 (attribute-specifier-seq-opt)] "extern" [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] "inline" [reduce using rule 83 (attribute-specifier-seq-opt)] "::" [reduce using rule 83 (attribute-specifier-seq-opt)] "typename" [reduce using rule 83 (attribute-specifier-seq-opt)] "virtual" [reduce using rule 83 (attribute-specifier-seq-opt)] "using" [reduce using rule 83 (attribute-specifier-seq-opt)] "class" [reduce using rule 83 (attribute-specifier-seq-opt)] "struct" [reduce using rule 83 (attribute-specifier-seq-opt)] "union" [reduce using rule 83 (attribute-specifier-seq-opt)] "const" [reduce using rule 83 (attribute-specifier-seq-opt)] "volatile" [reduce using rule 83 (attribute-specifier-seq-opt)] "friend" [reduce using rule 83 (attribute-specifier-seq-opt)] "typedef" [reduce using rule 83 (attribute-specifier-seq-opt)] "consteval" [reduce using rule 83 (attribute-specifier-seq-opt)] "constinit" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 83 (attribute-specifier-seq-opt)] "decltype" [reduce using rule 710 (type-constraint-opt)] "enum" [reduce using rule 83 (attribute-specifier-seq-opt)] "explicit" [reduce using rule 83 (attribute-specifier-seq-opt)] "auto" reduce using rule 83 (attribute-specifier-seq-opt) "auto" [reduce using rule 710 (type-constraint-opt)] "char" [reduce using rule 83 (attribute-specifier-seq-opt)] "char8_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char16_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "char32_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "wchar_t" [reduce using rule 83 (attribute-specifier-seq-opt)] "bool" [reduce using rule 83 (attribute-specifier-seq-opt)] "short" [reduce using rule 83 (attribute-specifier-seq-opt)] "int" [reduce using rule 83 (attribute-specifier-seq-opt)] "long" [reduce using rule 83 (attribute-specifier-seq-opt)] "signed" [reduce using rule 83 (attribute-specifier-seq-opt)] "unsigned" [reduce using rule 83 (attribute-specifier-seq-opt)] "float" [reduce using rule 83 (attribute-specifier-seq-opt)] "double" [reduce using rule 83 (attribute-specifier-seq-opt)] "void" [reduce using rule 83 (attribute-specifier-seq-opt)] "static" [reduce using rule 83 (attribute-specifier-seq-opt)] "thread_local" [reduce using rule 83 (attribute-specifier-seq-opt)] "mutable" [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 973 attribute-specifier-seq-opt go to state 974 block-declaration go to state 975 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 976 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 155 function-specifier go to state 79 labeled-statement go to state 977 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1325 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113

State 1324

321 for-range-declarationattribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt "[" identifier-list "]" $default reduce using rule 321 (for-range-declaration)

State 1325

629 selection-statement"if" CONSTEXPR-opt "(" init-statement-opt condition ")" statement "else" statement $default reduce using rule 629 (selection-statement)