================ @@ -5004,6 +5004,20 @@ static bool CheckDeducedPlaceholderConstraints(Sema &S, const AutoType &Type, return true; MultiLevelTemplateArgumentList MLTAL(Concept, CanonicalConverted, /*Final=*/false); + // Build up an EvaluationContext with an ImplicitConceptSpecializationDecl so + // that the template arguments of the constraint can be preserved. For + // example: + // + // template <class T> + // concept C = []<D U = void>() { return true; }(); + // + // We need the argument for T while evaluating type constraint D in + // building the CallExpr to the lambda. + EnterExpressionEvaluationContext EECtx( + S, Sema::ExpressionEvaluationContext::ConstantEvaluated, ---------------- zyn0217 wrote:
I changed these two to `Unevaluated` and all our tests were still passed. > a bunch of bugs for evaluating that incorreclty. Probably? Or it could be we have been pushing another unevaluated context during the evaluation, so the context kind here doesn't matter. https://github.com/llvm/llvm-project/pull/93945 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits