diff --git a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
index eef91f7..4821dc5 100644
--- a/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_stream_acc_unittest.cpp
@@ -4,6 +4,7 @@
 
 #include "core/fpdfapi/parser/cpdf_stream_acc.h"
 
+#include <algorithm>
 #include <utility>
 
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
@@ -31,5 +32,7 @@
   auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream);
   stream_acc->LoadAllDataRaw();
   stream.Reset();
-  EXPECT_EQ(pdfium::make_span(kData), stream_acc->GetSpan());
+  auto span = stream_acc->GetSpan();
+  EXPECT_TRUE(
+      std::equal(std::begin(kData), std::end(kData), span.begin(), span.end()));
 }
diff --git a/core/fxcrt/bytestring_unittest.cpp b/core/fxcrt/bytestring_unittest.cpp
index 2fc83bd..6411d9b 100644
--- a/core/fxcrt/bytestring_unittest.cpp
+++ b/core/fxcrt/bytestring_unittest.cpp
@@ -1520,7 +1520,9 @@
 
   pdfium::span<const uint8_t> span5(
       pdfium::as_bytes(pdfium::make_span("hello", 5u)));
-  EXPECT_EQ(byte_string_c.raw_span(), span5);
+  auto raw_span = byte_string_c.raw_span();
+  EXPECT_TRUE(
+      std::equal(raw_span.begin(), raw_span.end(), span5.begin(), span5.end()));
 }
 
 TEST(ByteStringView, OperatorNE) {
diff --git a/core/fxcrt/string_view_template.h b/core/fxcrt/string_view_template.h
index 628bb79..069b803 100644
--- a/core/fxcrt/string_view_template.h
+++ b/core/fxcrt/string_view_template.h
@@ -101,7 +101,8 @@
   }
 
   bool operator==(const StringViewTemplate& other) const {
-    return m_Span == other.m_Span;
+    return std::equal(m_Span.begin(), m_Span.end(), other.m_Span.begin(),
+                      other.m_Span.end());
   }
   bool operator==(const CharType* ptr) const {
     StringViewTemplate other(ptr);
diff --git a/third_party/base/containers/span.h b/third_party/base/containers/span.h
index 0d600c3..00a2324 100644
--- a/third_party/base/containers/span.h
+++ b/third_party/base/containers/span.h
@@ -309,40 +309,6 @@
   size_t size_ = 0;
 };
 
-// [span.comparison], span comparison operators
-// Relational operators. Equality is a element-wise comparison.
-template <typename T>
-constexpr bool operator==(span<T> lhs, span<T> rhs) noexcept {
-  return lhs.size() == rhs.size() &&
-         std::equal(lhs.cbegin(), lhs.cend(), rhs.cbegin());
-}
-
-template <typename T>
-constexpr bool operator!=(span<T> lhs, span<T> rhs) noexcept {
-  return !(lhs == rhs);
-}
-
-template <typename T>
-constexpr bool operator<(span<T> lhs, span<T> rhs) noexcept {
-  return std::lexicographical_compare(lhs.cbegin(), lhs.cend(), rhs.cbegin(),
-                                      rhs.cend());
-}
-
-template <typename T>
-constexpr bool operator<=(span<T> lhs, span<T> rhs) noexcept {
-  return !(rhs < lhs);
-}
-
-template <typename T>
-constexpr bool operator>(span<T> lhs, span<T> rhs) noexcept {
-  return rhs < lhs;
-}
-
-template <typename T>
-constexpr bool operator>=(span<T> lhs, span<T> rhs) noexcept {
-  return !(lhs < rhs);
-}
-
 // [span.objectrep], views of object representation
 template <typename T>
 span<const uint8_t> as_bytes(span<T> s) noexcept {
