https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101209
Bug ID: 101209 Summary: ICE with trailing return type on a conversion operator Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: aaron at aaronballman dot com Target Milestone: --- I was curious what kind of diagnostics different compilers would give me for some nonsense code, and found that the following code causes an ICE in GCC. struct S { operator int() const -> double; }; <source>:2:27: internal compiler error: in splice_late_return_type, at cp/pt.c:29753 2 | operator int() const -> double; | ^~~~~~ 0x1d48999 internal_error(char const*, ...) ???:0 0x724013 fancy_abort(char const*, int, char const*) ???:0 0x9847fc splice_late_return_type(tree_node*, tree_node*) ???:0 0x808c53 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*, decl_context, int, tree_node**) ???:0 0x834403 grokfield(cp_declarator const*, cp_decl_specifier_seq*, tree_node*, bool, tree_node*, tree_node*) ???:0 0x94cadd c_parse_file() ???:0 0xacfe82 c_common_parse_file() ???:0 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 This should likely give an error about using a trailing return type for a function with a declared return type other than a placeholder type.