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

Reply via email to