================
@@ -1162,12 +1179,32 @@ static ExprResult formImmediatelyDeclaredConstraint(
// constraint of T. [...]
CXXScopeSpec SS;
SS.Adopt(NS);
- ExprResult ImmediatelyDeclaredConstraint = S.CheckConceptTemplateId(
- SS, /*TemplateKWLoc=*/SourceLocation(), NameInfo,
- /*FoundDecl=*/FoundDecl ? FoundDecl : NamedConcept, NamedConcept,
- &ConstraintArgs);
- if (ImmediatelyDeclaredConstraint.isInvalid() || !EllipsisLoc.isValid())
- return ImmediatelyDeclaredConstraint;
+ ExprResult ImmediatelyDeclaredConstraint;
+ if (auto *CD = dyn_cast<ConceptDecl>(NamedConcept)) {
+ ImmediatelyDeclaredConstraint = S.CheckConceptTemplateId(
+ SS, /*TemplateKWLoc=*/SourceLocation(), NameInfo,
+ /*FoundDecl=*/FoundDecl ? FoundDecl : NamedConcept, CD,
+ &ConstraintArgs);
+ if (ImmediatelyDeclaredConstraint.isInvalid() || !EllipsisLoc.isValid())
+ return ImmediatelyDeclaredConstraint;
+ }
+ // We have a template template parameter
+ else {
+ auto *CDT = dyn_cast<TemplateTemplateParmDecl>(NamedConcept);
+ ImmediatelyDeclaredConstraint = S.CheckVarOrConceptTemplateTemplateId(
+ SS, NameInfo, CDT, SourceLocation(), &ConstraintArgs);
+ if (ImmediatelyDeclaredConstraint.isInvalid())
+ return ImmediatelyDeclaredConstraint;
+ UnresolvedSet<1> R;
+ R.addDecl(CDT);
+ ImmediatelyDeclaredConstraint = UnresolvedLookupExpr::Create(
+ S.getASTContext(), nullptr, SS.getWithLocInContext(S.getASTContext()),
+ SourceLocation(), NameInfo, false, &ConstraintArgs, R.begin(), R.end(),
+ /*KnownDependent=*/false,
+ /*KnownInstantiationDependent=*/false);
----------------
cor3ntin wrote:
I added that in CheckVarOrConceptTemplateTemplateId (and moved the creation of
the UnresolvedLookupExpr there)
https://github.com/llvm/llvm-project/pull/150823
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits