@@ -11454,25 +11454,26 @@ bool Sema::CheckDeductionGuideDeclarator(Declarator &D, QualType &R,
1145411454 const TemplateSpecializationType *TST = RetTST.getTypePtr();
1145511455 while (TST && TST->isTypeAlias())
1145611456 TST = TST->getAliasedType()->getAs<TemplateSpecializationType>();
11457- assert(TST && "failed to resolve type alias");
11458-
11459- TemplateName SpecifiedName = TST->getTemplateName();
11460- bool TemplateMatches = Context.hasSameTemplateName(
11461- SpecifiedName, GuidedTemplate, /*IgnoreDeduced=*/true);
11462-
11463- const QualifiedTemplateName *Qualifiers =
11464- SpecifiedName.getAsQualifiedTemplateName();
11465- assert(Qualifiers && "expected QualifiedTemplate");
11466- bool SimplyWritten = !Qualifiers->hasTemplateKeyword() &&
11467- Qualifiers->getQualifier() == nullptr;
11468- if (SimplyWritten && TemplateMatches)
11469- AcceptableReturnType = true;
11470- else {
11471- // This could still instantiate to the right type, unless we know it
11472- // names the wrong class template.
11473- auto *TD = SpecifiedName.getAsTemplateDecl();
11474- MightInstantiateToSpecialization = !(TD && isa<ClassTemplateDecl>(TD) &&
11475- !TemplateMatches);
11457+
11458+ if (TST) {
11459+ TemplateName SpecifiedName = TST->getTemplateName();
11460+ bool TemplateMatches = Context.hasSameTemplateName(
11461+ SpecifiedName, GuidedTemplate, /*IgnoreDeduced=*/true);
11462+
11463+ const QualifiedTemplateName *Qualifiers =
11464+ SpecifiedName.getAsQualifiedTemplateName();
11465+ assert(Qualifiers && "expected QualifiedTemplate");
11466+ bool SimplyWritten = !Qualifiers->hasTemplateKeyword() &&
11467+ Qualifiers->getQualifier() == nullptr;
11468+ if (SimplyWritten && TemplateMatches)
11469+ AcceptableReturnType = true;
11470+ else {
11471+ // This could still instantiate to the right type, unless we know it
11472+ // names the wrong class template.
11473+ auto *TD = SpecifiedName.getAsTemplateDecl();
11474+ MightInstantiateToSpecialization =
11475+ !(TD && isa<ClassTemplateDecl>(TD) && !TemplateMatches);
11476+ }
1147611477 }
1147711478 } else if (!RetTy.hasQualifiers() && RetTy->isDependentType()) {
1147811479 MightInstantiateToSpecialization = true;
0 commit comments