https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79070
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2017-02-08 00:00:00 |2021-3-30 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- For Barry's example, Clang gives the exact same error in all three cases, which is much more useful: 79070.C:11:17: error: reference to 'Something' is ambiguous static_assert(C<Something<int>>); ^ 79070.C:8:30: note: candidate found by name lookup is 'Something' template <typename T> struct Something { }; ^ 79070.C:2:58: note: candidate found by name lookup is 'N::Something' template <typename T, typename U, typename V> struct Something { }; ^ 79070.C:14:3: error: reference to 'Something' is ambiguous X<Something<int>> x; ^ 79070.C:8:30: note: candidate found by name lookup is 'Something' template <typename T> struct Something { }; ^ 79070.C:2:58: note: candidate found by name lookup is 'N::Something' template <typename T, typename U, typename V> struct Something { }; ^ 79070.C:17:11: error: reference to 'Something' is ambiguous using T = Something<int>; ^ 79070.C:8:30: note: candidate found by name lookup is 'Something' template <typename T> struct Something { }; ^ 79070.C:2:58: note: candidate found by name lookup is 'N::Something' template <typename T, typename U, typename V> struct Something { }; ^ 3 errors generated.