On Tue, Mar 20, 2018 at 4:15 PM, Alexandre Oliva <aol...@redhat.com> wrote: > On Mar 20, 2018, Jason Merrill <ja...@redhat.com> wrote: > >> On Sat, Mar 17, 2018 at 8:13 AM, Alexandre Oliva <aol...@redhat.com> wrote: >>> As we go through each of the template parameters, substituting it with >>> corresponding template arguments, an incorrect argument list might >>> cause us to index argument vectors past their length (or fail in the >>> preceding tree checks). Avoid such dereferences and instead issue an >>> error (if requested) if we find the argument index to be past the >>> parameter vector length. > >> Any time we hit this abort, it indicates a bug in earlier processing, >> so that we're looking up a template parameter in an argument list for >> a different template. > > That doesn't seem to be the case here. The argument list given for U is > <T>, as in the testcase, the problem is that U is misdeclared as taking > <int,int> <typename> (two template levels for a single template). > > Should we aim at rejecting the declaration of U?
Yes. Jason