Stop calling a constexpr function to evaluate the boolean condition of std::enable_if (#176241)

This is an attempt to fix a windows build failure after
6fac9b143252bec62c1a5ee9fc1b0f214e7f2f8e.
This commit is contained in:
Akira Hatanaka 2026-01-15 13:45:27 -08:00 committed by GitHub
parent c70ce1128d
commit 64546dfd3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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;
}