On Tue, Apr 3, 2018 at 3:54 AM, Alexandre Oliva <aol...@redhat.com> wrote: > On Apr 2, 2018, Jason Merrill <ja...@redhat.com> wrote: > >> On Sat, Mar 31, 2018 at 4:23 AM, Alexandre Oliva <aol...@redhat.com> wrote: >>> On Mar 30, 2018, Jason Merrill <ja...@redhat.com> wrote: >>> template <typename T> >>> void foo(T t) { >>> typename T::template C<auto> u = t; >>> T::template C<auto> (t); >>> T::template C<auto>::f (t, u); >>> } > >> We should be able to distinguish those cases based on tag_type.
>[...] > And then, while we're parsing "template C<auto>", we haven't yet reached > the '::' after the closing angle bracket that would tell us to regard > the id necessarily as a typename, so I don't see how we'd get a > scope_type in tag_type for the third case. Ah, good point. Then perhaps put the new function in pt.c and also call it from tsubst_copy_and_build? Jason