forked from OSchip/llvm-project
When performing a substitution into a dependent alias template, mark the
outer levels as retained rather than omitting their arguments. This better reflects what's going on (we're performing a substitution while still inside a template). In theory this is also more correct, but I've not found a testcase where it matters in practice (largely because we don't allow alias templates to be declared inside a function).
This commit is contained in:
parent
c7fbe2191b
commit
c851d6cf4a
|
@ -3558,9 +3558,8 @@ QualType Sema::CheckTemplateIdType(TemplateName Name,
|
|||
// Only substitute for the innermost template argument list.
|
||||
MultiLevelTemplateArgumentList TemplateArgLists;
|
||||
TemplateArgLists.addOuterTemplateArguments(&StackTemplateArgs);
|
||||
unsigned Depth = AliasTemplate->getTemplateParameters()->getDepth();
|
||||
for (unsigned I = 0; I < Depth; ++I)
|
||||
TemplateArgLists.addOuterTemplateArguments(None);
|
||||
TemplateArgLists.addOuterRetainedLevels(
|
||||
AliasTemplate->getTemplateParameters()->getDepth());
|
||||
|
||||
LocalInstantiationScope Scope(*this);
|
||||
InstantiatingTemplate Inst(*this, TemplateLoc, Template);
|
||||
|
|
Loading…
Reference in New Issue