https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79056
Volker Reichelt <reichelt at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |error-recovery Last reconfirmed|2017-01-30 00:00:00 |2017-06-05 Summary|[C++17] ICE with broken |[7/8 Regression] [C++17] |deduction guide |ICE with broken deduction | |guide / broken template | |parameter --- Comment #3 from Volker Reichelt <reichelt at gcc dot gnu.org> --- While Martin's example doesn't ICE for me, the following code snippet crashes with a very similar stack trace (when using -std=c++1z). Btw, it only takes a single space to make it valid: =================================================== template<typename> struct A {}; template<typename T> void foo(A<T>=A<T>()) {} void bar() { foo(A<int>()); } =================================================== PR79056.cc:3:41: error: template argument 1 is invalid template<typename T> void foo(A<T>=A<T>()) {} ^ PR79056.cc:3:41: error: template argument 1 is invalid PR79056.cc:3:41: error: template argument 1 is invalid PR79056.cc:3:41: error: template argument 1 is invalid PR79056.cc:3:31: internal compiler error: Segmentation fault template<typename T> void foo(A<T>=A<T>()) {} ^ 0xd724ef crash_signal ../../gcc/gcc/toplev.c:337 0x736779 cp_parser_check_for_invalid_template_id ../../gcc/gcc/cp/parser.c:2986 0x7390b5 cp_parser_check_for_invalid_template_id ../../gcc/gcc/cp/parser.c:2984 0x7390b5 cp_parser_simple_type_specifier ../../gcc/gcc/cp/parser.c:16945 0x726c8d cp_parser_type_specifier ../../gcc/gcc/cp/parser.c:16499 0x727eda cp_parser_decl_specifier_seq ../../gcc/gcc/cp/parser.c:13330 0x742d25 cp_parser_parameter_declaration ../../gcc/gcc/cp/parser.c:21183 0x7435ec cp_parser_parameter_declaration_list ../../gcc/gcc/cp/parser.c:20999 0x743a5c cp_parser_parameter_declaration_clause ../../gcc/gcc/cp/parser.c:20922 0x72a471 cp_parser_direct_declarator ../../gcc/gcc/cp/parser.c:19645 0x72a471 cp_parser_declarator ../../gcc/gcc/cp/parser.c:19521 0x72278c cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:19046 0x72381a cp_parser_single_declaration ../../gcc/gcc/cp/parser.c:26719 0x7456dc cp_parser_template_declaration_after_parameters ../../gcc/gcc/cp/parser.c:26323 0x745364 cp_parser_explicit_template_declaration ../../gcc/gcc/cp/parser.c:26558 0x745364 cp_parser_template_declaration_after_export ../../gcc/gcc/cp/parser.c:26577 0x74d589 cp_parser_declaration ../../gcc/gcc/cp/parser.c:12449 0x74f0ab cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:12376 0x74f38a cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:4366 0x74f38a c_parse_file() ../../gcc/gcc/cp/parser.c:38431 Please submit a full bug report, [etc.] This makes it a regression for GCC 7.