https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69481
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |trippels at gcc dot gnu.org --- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Here's the reduced testcase from PR77629: markus@x4 tmp % cat out.ii template <bool> struct A; template <bool _Cond> using enable_if_t = typename A<_Cond>::type; template <typename, int, typename, typename> struct B; template <int> struct C; template <typename> struct D; template <typename Scalar_, int Size_, typename Derived> struct B<Scalar_, Size_, Derived, enable_if_t<C<Size_>::peel>> { using Base = D<Scalar_>; // typedef D<Scalar_> Base; // OK using typename Base::Scalar; Scalar a; }; markus@x4 tmp % g++ -c out.ii out.ii:11:3: internal compiler error: same canonical type node for different types B<Scalar_, Size_, Derived, typename A<C<Size_>::peel>::type>::Base and D< <template-parameter-1-1> > Scalar a; ^~~~~~ 0x79d2e4 comptypes(tree_node*, tree_node*, int) ../../gcc/gcc/cp/typeck.c:1437 0x6d769d resolve_typename_type(tree_node*, bool) ../../gcc/gcc/cp/pt.c:23721 0x79b874 structural_comptypes ../../gcc/gcc/cp/typeck.c:1204 0x778352 cp_parser_constructor_declarator_p ../../gcc/gcc/cp/parser.c:25376 0x778352 cp_parser_decl_specifier_seq ../../gcc/gcc/cp/parser.c:12874 0x787b59 cp_parser_member_declaration ../../gcc/gcc/cp/parser.c:22479 0x761230 cp_parser_member_specification_opt ../../gcc/gcc/cp/parser.c:22331 0x761230 cp_parser_class_specifier_1 ../../gcc/gcc/cp/parser.c:21496 0x763a29 cp_parser_class_specifier ../../gcc/gcc/cp/parser.c:21745 0x763a29 cp_parser_type_specifier ../../gcc/gcc/cp/parser.c:15971 0x777fc8 cp_parser_decl_specifier_seq ../../gcc/gcc/cp/parser.c:12889 0x786863 cp_parser_single_declaration ../../gcc/gcc/cp/parser.c:25975 0x786c13 cp_parser_template_declaration_after_parameters ../../gcc/gcc/cp/parser.c:25667 0x787623 cp_parser_explicit_template_declaration ../../gcc/gcc/cp/parser.c:25902 0x787623 cp_parser_template_declaration_after_export ../../gcc/gcc/cp/parser.c:25920 0x78e5d9 cp_parser_declaration ../../gcc/gcc/cp/parser.c:12209 0x78ce20 cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:12139 0x78d192 cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:4356 0x78d192 c_parse_file() ../../gcc/gcc/cp/parser.c:37714 0x8fa672 c_common_parse_file() ../../gcc/gcc/c-family/c-opts.c:1073