https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66475
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |7.0 Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Fixed by r243624: re PR c++/69481 (ICE with C++11 alias using with templates) cp/ PR c++/69481 * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking. (TYPE_ALIAS_TEMPLATE_INFO): New. (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New. Use those macros. * error.c (dump_alias_template_specialization): Adjust. * pt.c (maybe_process_partial_specialization) iterative_has_template_arg, find_parameter_packs_r, alias_template_specialization_p, dependent_alias_template_spec_p, get_underlying_template, lookup_template_class_1, unify): Adjust template using decl access. testsuite/ PR c++/69481 * g++.dg/cpp0x/pr69481.C: New. Since GCC 7.1 we print: 66475.cc:19:11: error: 'using Base = struct Foo<int>' is private within this context Bar<int>::Base x; // shouldn't compile, Base is private ^~~~ 66475.cc:10:22: note: declared private here using Base = Foo<T>; // the combination of this and the public export of a type from Base below, causes this example to compile even though it shouldn't ^