[clang] [Clang][RFC] Bypass TAD during overload resolution if a perfect match exists (PR #133426)

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 31 14:34:58 PDT 2025


================
@@ -8455,11 +8524,17 @@ void Sema::AddNonMemberOperatorCandidates(
     if (FunTmpl) {
       AddTemplateOverloadCandidate(FunTmpl, F.getPair(), ExplicitTemplateArgs,
                                    FunctionArgs, CandidateSet);
-      if (CandidateSet.getRewriteInfo().shouldAddReversed(*this, Args, FD))
-        AddTemplateOverloadCandidate(
-            FunTmpl, F.getPair(), ExplicitTemplateArgs,
-            {FunctionArgs[1], FunctionArgs[0]}, CandidateSet, false, false,
-            true, ADLCallKind::NotADL, OverloadCandidateParamOrder::Reversed);
+      if (CandidateSet.getRewriteInfo().shouldAddReversed(*this, Args, FD)) {
+
+        // As template candidates are not deduced immediately,
+        // persist the arry in the overload set.
----------------
zygoloid wrote:

```suggestion
        // persist the array in the overload set.
```

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


More information about the cfe-commits mailing list