https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121795
Bug ID: 121795
Summary: ICE for type pack indexing
Product: gcc
Version: 15.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: geza.herman at gmail dot com
Target Milestone: ---
This little program generates ICE (compile it with "g++ -c -std=gnu++26").
(happens with gcc 16.0 as well)
--- 8< ---
template <typename TARGET, typename SOURCE>
constexpr TARGET implicit_cast(SOURCE &&source) {
return static_cast<decltype(source) &&>(source);
}
template <typename FIRST_TYPE, typename... TYPES>
constexpr FIRST_TYPE implicit_cast(TYPES...[sizeof...(TYPES) - 1] value) {
return implicit_cast<TYPES...>(value);
}
int main() {
implicit_cast<int, int>(0);
}
--- 8< ---
ice.cpp: In function ‘int main()’:
ice.cpp:12:28: internal compiler error: in unify, at cp/pt.cc:25999
12 | implicit_cast<int, int>(0);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
0x169bd3d internal_error(char const*, ...)
../../src/gcc/diagnostic-global-context.cc:517
0x169be0f fancy_abort(char const*, int, char const*)
../../src/gcc/diagnostic.cc:1749
0xa2577c unify
../../src/gcc/cp/pt.cc:25999
0x1aa912d more_specialized_fn(tree_node*, tree_node*, int)
../../src/gcc/cp/pt.cc:26361
0x193a7b4 joust
../../src/gcc/cp/call.cc:13519
0x187e293 tourney
../../src/gcc/cp/call.cc:13834
0x1878d87 perform_overload_resolution
../../src/gcc/cp/call.cc:5126
0x187452c build_new_function_call(tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
../../src/gcc/cp/call.cc:5218
0x187336d finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**,
bool, bool, int)
../../src/gcc/cp/semantics.cc:3504
0x17c7bd8 cp_parser_postfix_expression
../../src/gcc/cp/parser.cc:8474
0x17c6ae3 cp_parser_unary_expression
../../src/gcc/cp/parser.cc:9735
0x17c5bbb cp_parser_cast_expression
../../src/gcc/cp/parser.cc:10650
0x17c4e65 cp_parser_binary_expression
../../src/gcc/cp/parser.cc:10753
0x17c4192 cp_parser_assignment_expression
../../src/gcc/cp/parser.cc:11098
0x1807c0c cp_parser_expression
../../src/gcc/cp/parser.cc:11281
0x1804d8b cp_parser_expression_statement
../../src/gcc/cp/parser.cc:13598
0x18024a0 cp_parser_statement
../../src/gcc/cp/parser.cc:13342
0x18020c4 cp_parser_statement_seq_opt
../../src/gcc/cp/parser.cc:13861
0x1800b58 cp_parser_compound_statement
../../src/gcc/cp/parser.cc:13708
0x17ff093 cp_parser_function_body
../../src/gcc/cp/parser.cc:26712