================ @@ -960,6 +960,8 @@ Parser::ParseNonTypeTemplateParameter(unsigned Depth, unsigned Position) { EnterExpressionEvaluationContext ConstantEvaluated( Actions, Sema::ExpressionEvaluationContext::ConstantEvaluated); DefaultArg = Actions.CorrectDelayedTyposInExpr(ParseInitializer()); + if (DefaultArg.isUsable()) + DefaultArg = Actions.ActOnConstantExpression(DefaultArg); ---------------- zyn0217 wrote:
How about ```cpp DefaultArg = Actions.ActOnConstantExpression(ParseInitializer()) ``` Besides, I still don't understand why we shouldn't accept such code, according to the approach taken here ```cpp struct S {}; void foo() { constexpr S x{}; auto a = []<auto = x>{}; } ``` but rather accept only non-record-type cases ```cpp void foo() { constexpr int x{}; auto a = []<auto = x>{}; } ``` Can you add some standard quotes here? https://github.com/llvm/llvm-project/pull/107073 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits