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