https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99119
Bug ID: 99119 Summary: Class Types in Non-Type Template Parameters - ICE with templates nested Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vopl at bk dot ru Target Milestone: --- g++ 9, 10 $ cat test.cpp && echo EOFFFFFFF //Class Types in Non-Type Template Parameters - ICE with templates nested template<int size> struct Name {}; template <class T> constexpr Name<5> tname5 {}; template <Name n> struct Use{}; ////////////////////////////////////////////////// // now try to use tname5 Use<tname5<int>> use0;//ok template <class T> Use<tname5<T>> use1;//ICE //template <class T> Use<tname5<int>> use2;//ICE //template <int> Use<tname5<int>> use3;//ICE template <class T> struct Tmpl { //Use<tname5<T>> use0;// ICE //Use<tname5<int>> use1;// ICE }; template <auto v> struct Tmpl2 { //Use<tname5<decltype(v)>> use0;// ICE //Use<tname5<int>> use1;// ICE }; template <class> void f() { //Use<tname<int>> use0;// ICE }; EOFFFFFFF $ g++ -std=gnu++2a test.cpp test.cpp:13:32: internal compiler error: Segmentation fault 13 | template <class T> Use<tname5<T>> use1;//ICE | ^~ 0xa86b6d crash_signal /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/toplev.c:328 0x7fdedac189ef ??? /usr/src/debug/sys-libs/glibc-2.32-r6/glibc-2.32/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0xfa498e resolve_args(vec<tree_node*, va_gc, vl_embed>*, int) /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/call.c:4457 0x84a43d do_class_deduction /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:28842 0x84a43d do_auto_deduction(tree_node*, tree_node*, tree_node*, int, auto_deduction_context, tree_node*, int) /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:28975 0x73e0ab convert_template_argument /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:8404 0x105ae43 coerce_template_parms /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:8908 0x1058aed lookup_template_class_1 /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:9746 0x10580d6 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*, int, int) /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:10118 0x10580d6 finish_template_type(tree_node*, tree_node*, int) /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/semantics.c:3408 0xec6792 cp_parser_template_id /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:16739 0xed5dfa cp_parser_class_name /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:23713 0xec40a5 cp_parser_qualifying_entity /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:6776 0xec40a5 cp_parser_nested_name_specifier_opt /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:6458 0x94a8ec cp_parser_template_introduction /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29203 0x6c5791 cp_parser_template_declaration_after_export /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29373 0x6c5791 cp_parser_template_declaration_after_parameters /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29068 0x6c18fe cp_parser_explicit_template_declaration /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29350 0xeae6ee cp_parser_template_declaration_after_export /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29369 0xeae6ee cp_parser_template_declaration /usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:15866