https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120224

            Bug ID: 120224
           Summary: ICE in cp_parser_expression_statement with ambiguous
                    std::void_t overload resolution since 14.1 until trunk
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mario.rodriguezb1 at um dot es
  Target Milestone: ---

GCC triggers an internal compiler error when resolving a templated function

```
#include <iostream>
template <typename> using Void_t = void;
template <typename T>
void my_template(std::void_t<decltype(sizeof(T))>* val);
template <typename T>
void my_template(Void_t<decltype(++T{})>*){
}
int main() {
    my_template<int>(nullptr);
}
```


```
<source>: In function 'int main()':
<source>:9:29: internal compiler error: in cp_parser_expression_statement, at
cp/parser.cc:13601
    9 |     my_template<int>(nullptr);
      |                             ^
0x2287465 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
        ???:0
0x22989b6 internal_error(char const*, ...)
        ???:0
0x7d443e fancy_abort(char const*, int, char const*)
        ???:0
0x981ebd c_parse_file()
        ???:0
0xa8b739 c_common_parse_file()
        ???:0
```

Happens since 14.1 until trunk 

https://gcc.godbolt.org/z/zfcrEvKqq

Reply via email to