[clang] [clang][Sema] fix incorrect ambiguous function call which use designated-initializer as template argument (PR #167159)

Zhikai Zeng via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 21 22:48:19 PST 2025


================
@@ -7291,11 +7291,26 @@ ExprResult Sema::CheckTemplateArgument(NamedDecl *Param, QualType ParamType,
     Result = ActOnConstantExpression(Result.get());
     if (Result.isInvalid() || !Result.get())
       return ExprError();
+    Expr* OldDeductionArg = DeductionArg;
     setDeductionArg(ActOnFinishFullExpr(Result.get(), Arg->getBeginLoc(),
                                         /*DiscardedValue=*/false,
                                         /*IsConstexpr=*/true,
                                         /*IsTemplateArgument=*/true)
                         .get());
+    // As for designated initializer, there might be multiple candidate
----------------
Backl1ght wrote:

Field decls are required by checks after `CheckDesignatedInitializer`. e.g. 

https://github.com/llvm/llvm-project/blob/545c3022d28164f5040036a7b515a85f74dbd5cc/clang/lib/Sema/SemaInit.cpp#L2498-L2516

https://github.com/llvm/llvm-project/pull/167159


More information about the cfe-commits mailing list