[llvm] 62b93d8 - Revert "[STLExtras] Add a template for detecting whether two types can be compared for equality (#176429)"

Jeremy Morse via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 19 10:10:01 PST 2026


Author: Jeremy Morse
Date: 2026-01-19T18:08:49Z
New Revision: 62b93d83a180c4ba83b366e4d11d2d07a33f307c

URL: https://github.com/llvm/llvm-project/commit/62b93d83a180c4ba83b366e4d11d2d07a33f307c
DIFF: https://github.com/llvm/llvm-project/commit/62b93d83a180c4ba83b366e4d11d2d07a33f307c.diff

LOG: Revert "[STLExtras] Add a template for detecting whether two types can be compared for equality (#176429)"

This reverts commit a66b8b7f51e118f029a8e8baeaada8588e41d92a.

MSVC doesn't like it: https://lab.llvm.org/buildbot/#/builders/2/builds/42388/steps/7/logs/stdio
Thus we'll revert and examine that.

Added: 
    

Modified: 
    llvm/include/llvm/ADT/STLExtras.h
    llvm/unittests/ADT/STLExtrasTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h
index d9c6b9ac5f1d7..23da931a63de1 100644
--- a/llvm/include/llvm/ADT/STLExtras.h
+++ b/llvm/include/llvm/ADT/STLExtras.h
@@ -2682,17 +2682,6 @@ template <typename T> using has_sizeof = decltype(sizeof(T));
 template <typename T>
 constexpr bool is_incomplete_v = !is_detected<detail::has_sizeof, T>::value;
 
-// Detect types with equality comparison operators.
-namespace detail {
-template <typename T, typename U>
-using has_equality_comparison =
-    decltype(std::declval<const T &>() == std::declval<const U &>());
-} // namespace detail
-
-/// Detects when type `const T` can be compared for equality with `const U`.
-template <typename T, typename U = T>
-constexpr bool has_equality_comparison_v =
-    is_detected<detail::has_equality_comparison, T, U>::value;
 } // end namespace llvm
 
 namespace std {

diff  --git a/llvm/unittests/ADT/STLExtrasTest.cpp b/llvm/unittests/ADT/STLExtrasTest.cpp
index a2eb251c98588..fe71945e4a794 100644
--- a/llvm/unittests/ADT/STLExtrasTest.cpp
+++ b/llvm/unittests/ADT/STLExtrasTest.cpp
@@ -1777,43 +1777,8 @@ TEST(STLExtrasTest, ReverseConditionally) {
 struct Foo;
 struct Bar {};
 
-TEST(STLExtrasTest, HasEqualityComparison) {
-  static_assert(is_incomplete_v<Foo>, "Foo is incomplete");
-  static_assert(!is_incomplete_v<Bar>, "Bar is defined");
-
-  struct NoEqualityComparison {};
-  static_assert(!has_equality_comparison_v<NoEqualityComparison>);
-
-  // Mutating equality comparison doesn't count.
-  struct MutatingEqualityComparison {
-    bool operator==(MutatingEqualityComparison &Other) { return false; }
-  };
-  static_assert(!has_equality_comparison_v<MutatingEqualityComparison>);
-
-  struct PrivateEqualityComparison {
-  private:
-    bool operator==(const PrivateEqualityComparison &Other) const {
-      return false;
-    }
-  };
-  static_assert(!has_equality_comparison_v<PrivateEqualityComparison>);
-
-  struct PublicEqualityComparison {
-    bool operator==(const PublicEqualityComparison &Other) const {
-      return false;
-    }
-  };
-  static_assert(has_equality_comparison_v<PublicEqualityComparison>);
-
-  struct StructA {};
-  struct StructB {
-    bool operator==(const StructA &Other) const { return false; }
-  };
-  static_assert(!has_equality_comparison_v<StructA, StructB>);
-  static_assert(has_equality_comparison_v<StructB, StructA>);
-
-  SUCCEED();
-}
+static_assert(is_incomplete_v<Foo>, "Foo is incomplete");
+static_assert(!is_incomplete_v<Bar>, "Bar is defined");
 
 TEST(STLExtrasTest, Search) {
   // Test finding a subsequence in the middle.


        


More information about the llvm-commits mailing list