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
```

Reply via email to