https://github.com/ahatanak created 
https://github.com/llvm/llvm-project/pull/176241

std::enable_if

This is an attempt to fix a windows build failure after 
6fac9b143252bec62c1a5ee9fc1b0f214e7f2f8e.

>From 578aa21a947b5801fdec08f6ada62dfb5a0f6ad4 Mon Sep 17 00:00:00 2001
From: Akira Hatanaka <[email protected]>
Date: Thu, 15 Jan 2026 12:45:50 -0800
Subject: [PATCH] Stop calling a constexpr function to evaluate the boolean
 condition of std::enable_if

This is an attempt to fix a windows build failure after
6fac9b143252bec62c1a5ee9fc1b0f214e7f2f8e.
---
 clang/lib/AST/AttrImpl.cpp | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/clang/lib/AST/AttrImpl.cpp b/clang/lib/AST/AttrImpl.cpp
index 3d994e06d2342..0c7e81f1749cb 100644
--- a/clang/lib/AST/AttrImpl.cpp
+++ b/clang/lib/AST/AttrImpl.cpp
@@ -289,21 +289,20 @@ namespace {
 //  - DeclArgument
 //  - OMPTraitInfoArgument
 //  - VariadicOMPInteropInfoArgument
-template <class T> constexpr bool useDefaultEquality() {
-  return std::is_same_v<T, StringRef> || std::is_same_v<T, VersionTuple> ||
-         std::is_same_v<T, IdentifierInfo *> || std::is_same_v<T, ParamIdx> ||
-         std::is_same_v<T, Attr *> || std::is_same_v<T, char *> ||
-         std::is_enum_v<T> || std::is_integral_v<T>;
-}
+#define USE_DEFAULT_EQUALITY                                                   
\
+  (std::is_same_v<T, StringRef> || std::is_same_v<T, VersionTuple> ||          
\
+   std::is_same_v<T, IdentifierInfo *> || std::is_same_v<T, ParamIdx> ||       
\
+   std::is_same_v<T, Attr *> || std::is_same_v<T, char *> ||                   
\
+   std::is_enum_v<T> || std::is_integral_v<T>)
 
 template <class T>
-typename std::enable_if_t<!useDefaultEquality<T>(), bool>
+typename std::enable_if_t<!USE_DEFAULT_EQUALITY, bool>
 equalAttrArgs(T A, T B, StructuralEquivalenceContext &Context) {
   return false;
 }
 
 template <class T>
-typename std::enable_if_t<useDefaultEquality<T>(), bool>
+typename std::enable_if_t<USE_DEFAULT_EQUALITY, bool>
 equalAttrArgs(T A1, T A2, StructuralEquivalenceContext &Context) {
   return A1 == A2;
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to