[gcc(refs/users/guojiufu/heads/guojiufu-branch)] libstdc++: Remove operator!= overloads for unordered containers

Jiu Fu Guo guojiufu@gcc.gnu.org
Mon Apr 27 09:36:36 GMT 2020


https://gcc.gnu.org/g:7ab9c2430ffb13de8433aa7d654192b5d2b1e7a9

commit 7ab9c2430ffb13de8433aa7d654192b5d2b1e7a9
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sun Apr 19 21:04:40 2020 +0100

    libstdc++: Remove operator!= overloads for unordered containers
    
    Some more C++20 changes from P1614R2, "The Mothership has Landed".
    
            * include/bits/unordered_map.h (unordered_map, unordered_multimap):
            Remove redundant operator!= for C++20.
            * include/bits/unordered_set.h (unordered_set, unordered_multiset):
            Likewise.
            * include/debug/unordered_map (unordered_map, unordered_multimap):
            Likewise.
            * include/debug/unordered_set (unordered_set, unordered_multiset):
            Likewise.

Diff:
---
 libstdc++-v3/ChangeLog                    | 9 +++++++++
 libstdc++-v3/include/bits/unordered_map.h | 4 ++++
 libstdc++-v3/include/bits/unordered_set.h | 4 ++++
 libstdc++-v3/include/debug/unordered_map  | 5 ++++-
 libstdc++-v3/include/debug/unordered_set  | 5 ++++-
 5 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8d5f0a12fd6..f7e0022e38f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,14 @@
 2020-04-19  Jonathan Wakely  <jwakely@redhat.com>
 
+	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
+	Remove redundant operator!= for C++20.
+	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
+	Likewise.
+	* include/debug/unordered_map (unordered_map, unordered_multimap):
+	Likewise.
+	* include/debug/unordered_set (unordered_set, unordered_multiset):
+	Likewise.
+
 	PR other/94629
 	* include/debug/formatter.h (_Error_formatter::_Parameter): Fix
 	redundant assignment in constructor.
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index 767f0d57976..ab1b1d52442 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -2092,11 +2092,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_h._M_equal(__y._M_h); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
     inline bool
     operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
   template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
     inline bool
@@ -2104,11 +2106,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_h._M_equal(__y._M_h); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
     inline bool
     operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
 _GLIBCXX_END_NAMESPACE_CONTAINER
 
diff --git a/libstdc++-v3/include/bits/unordered_set.h b/libstdc++-v3/include/bits/unordered_set.h
index 9c2cd45be9c..c9c9e9f38b7 100644
--- a/libstdc++-v3/include/bits/unordered_set.h
+++ b/libstdc++-v3/include/bits/unordered_set.h
@@ -1704,11 +1704,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_h._M_equal(__y._M_h); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<class _Value, class _Hash, class _Pred, class _Alloc>
     inline bool
     operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
   template<class _Value, class _Hash, class _Pred, class _Alloc>
     inline bool
@@ -1716,11 +1718,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_h._M_equal(__y._M_h); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<class _Value, class _Hash, class _Pred, class _Alloc>
     inline bool
     operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
 _GLIBCXX_END_NAMESPACE_CONTAINER
 
diff --git a/libstdc++-v3/include/debug/unordered_map b/libstdc++-v3/include/debug/unordered_map
index 7be1d2ee952..17fbba3aade 100644
--- a/libstdc++-v3/include/debug/unordered_map
+++ b/libstdc++-v3/include/debug/unordered_map
@@ -741,13 +741,14 @@ namespace __debug
 	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_base() == __y._M_base(); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<typename _Key, typename _Tp, typename _Hash,
 	   typename _Pred, typename _Alloc>
     inline bool
     operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
-
+#endif
 
   /// Class std::unordered_multimap with safety/checking/debug instrumentation.
   template<typename _Key, typename _Tp,
@@ -1347,12 +1348,14 @@ namespace __debug
 	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_base() == __y._M_base(); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<typename _Key, typename _Tp, typename _Hash,
 	   typename _Pred, typename _Alloc>
     inline bool
     operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
 } // namespace __debug
 } // namespace std
diff --git a/libstdc++-v3/include/debug/unordered_set b/libstdc++-v3/include/debug/unordered_set
index 9941bbe1c24..4d30852186c 100644
--- a/libstdc++-v3/include/debug/unordered_set
+++ b/libstdc++-v3/include/debug/unordered_set
@@ -612,12 +612,13 @@ namespace __debug
 	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_base() == __y._M_base(); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
     inline bool
     operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
-
+#endif
 
   /// Class std::unordered_multiset with safety/checking/debug instrumentation.
   template<typename _Value,
@@ -1176,11 +1177,13 @@ namespace __debug
 	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
     { return __x._M_base() == __y._M_base(); }
 
+#if __cpp_impl_three_way_comparison < 201907L
   template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
     inline bool
     operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x,
 	       const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y)
     { return !(__x == __y); }
+#endif
 
 } // namespace __debug
 } // namespace std


More information about the Libstdc++-cvs mailing list