[clang] [clang] SFINAE context refactor (PR #164703)

Corentin Jabot via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 23 05:07:20 PDT 2025


================
@@ -12394,45 +12391,65 @@ class Sema final : public SemaBase {
   /// failures rather than hard errors.
   bool AccessCheckingSFINAE;
 
+  class SFINAETrap;
+
+  struct SFINAEContextBase {
+    SFINAEContextBase(Sema &S, SFINAETrap *Cur)
+        : S(S), Prev(std::exchange(S.CurrentSFINAEContext, Cur)) {}
+
+  protected:
+    Sema &S;
+    ~SFINAEContextBase() { S.CurrentSFINAEContext = Prev; }
+
+  private:
+    SFINAETrap *Prev;
+  };
----------------
cor3ntin wrote:

The alternative would be `SFINAEContext _(S, SFINAEContext::NoSFINAE)` - that would also make sense to me.
I don't have strong feelings

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


More information about the cfe-commits mailing list