================
@@ -1002,8 +1005,13 @@ ExprResult ConstraintSatisfactionChecker::EvaluateSlow(
       const_cast<NamedDecl *>(Template), Constraint.getSourceRange());
 
   TemplateArgumentListInfo OutArgs(Ori->LAngleLoc, Ori->RAngleLoc);
-  if (S.SubstTemplateArguments(Ori->arguments(), *SubstitutedArgs, OutArgs) ||
-      Trap.hasErrorOccurred()) {
+
+  if (ConceptId == TopLevelConceptId) {
----------------
zyn0217 wrote:

I still don't think it matters anything, though I have changed it to reflect 
mizvekov's concerns.
If you look at where TopLevelConceptId is set, there's only one call: in 
Sema::CheckConceptTemplateId where we want to evaluate the concept immediately, 
and CL is also created right above the line.

Moreover, in concept checking, we build a parameter mapping first and attach 
the TopLevelConceptId to the top of mapping if it exists - note this reflects 
exactly what we want here, there's no modules/serialization involved and it's 
safe to compare those pointers afaict.

https://github.com/llvm/llvm-project/pull/207966
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to