https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127561
Bug ID: 127561
Summary: ICE when partially specializing a template with
decltype(auto) parameter
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eczbek.void at gmail dot com
Target Milestone: ---
https://godbolt.org/z/d3h5coM9K
```
template<decltype(auto)>
int x;
struct A {};
template<A a>
int x<a>;
```
```
<source>:7:5: internal compiler error: unexpected expression 'a' of kind
template_parm_index
7 | int x<a>;
| ^~~~
0x2c54718 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
???:0
0x2c4935b internal_error(char const*, ...)
???:0
0xbf00fe cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
???:0
0xbebd7c cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
???:0
0xbeb14a cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
???:0
0xbeb14a cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
???:0
0xc06779 maybe_constant_value(tree_node*, tree_node*, mce_value)
???:0
0xe08aed instantiate_non_dependent_expr(tree_node*, int)
???:0
0xe834fd finish_decltype_type(tree_node*, bool, int)
???:0
0xdfd4f2 do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context, tree_node*, int, tree_node*)
???:0
0xe224d3 coerce_template_parms(tree_node*, tree_node*, tree_node*, int, bool)
???:0
0xe401b3 check_explicit_specialization(tree_node*, tree_node*, int, int,
tree_node*)
???:0
0xc7e612 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
???:0
0xc83688 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
???:0
0xdd60e3 c_parse_file()
???:0
0xf69979 c_common_parse_file()
???:0
```