Remove unnecessary non-const accessors in hash table bases
authorJonathan Wakely <jwakely@redhat.com>
Thu, 16 May 2019 10:04:50 +0000 (11:04 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 16 May 2019 10:04:50 +0000 (11:04 +0100)
The const accessors are OK (and arguably more correct) for most callers
to use. The _M_swap functions that use the non-const overloads can just
directly use the _S_get members of the EBO helpers.

* include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
_S_get accessors for members in EBO helpers.
(_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
(_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
overloads.
(_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
helpers.
(_Hashtable_base::_M_eq()): Remove non-const overload.

From-SVN: r271286

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/hashtable_policy.h

index b5e6c973e647cbce137a1f51f93d310a092b5d02..acb6b1766950a956aa216bfb15f8794517895c72 100644 (file)
@@ -1,3 +1,14 @@
+2019-05-16  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
+       _S_get accessors for members in EBO helpers.
+       (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
+       (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
+       overloads.
+       (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
+       helpers.
+       (_Hashtable_base::_M_eq()): Remove non-const overload.
+
 2019-05-15  Jonathan Wakely  <jwakely@redhat.com>
 
        * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
index c7f466cd686a4f52c6c1c12fd2090c1de77bf1c2..b417a7d442c39be1e4b7ac780169d750491bb293 100644 (file)
@@ -1229,21 +1229,16 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       std::swap(_M_extract(), __x._M_extract());
-       std::swap(_M_ranged_hash(), __x._M_ranged_hash());
+       std::swap(__ebo_extract_key::_S_get(*this),
+                 __ebo_extract_key::_S_get(__x));
+       std::swap(__ebo_hash::_S_get(*this), __ebo_hash::_S_get(__x));
       }
 
       const _ExtractKey&
       _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
 
-      _ExtractKey&
-      _M_extract() { return __ebo_extract_key::_S_get(*this); }
-
       const _Hash&
       _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); }
-
-      _Hash&
-      _M_ranged_hash() { return __ebo_hash::_S_get(*this); }
     };
 
   // No specialization for ranged hash function while caching hash codes.
@@ -1322,28 +1317,20 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       std::swap(_M_extract(), __x._M_extract());
-       std::swap(_M_h1(), __x._M_h1());
-       std::swap(_M_h2(), __x._M_h2());
+       std::swap(__ebo_extract_key::_S_get(*this),
+                 __ebo_extract_key::_S_get(__x));
+       std::swap(__ebo_h1::_S_get(*this), __ebo_h1::_S_get(__x));
+       std::swap(__ebo_h2::_S_get(*this), __ebo_h2::_S_get(__x));
       }
 
       const _ExtractKey&
       _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
 
-      _ExtractKey&
-      _M_extract() { return __ebo_extract_key::_S_get(*this); }
-
       const _H1&
       _M_h1() const { return __ebo_h1::_S_cget(*this); }
 
-      _H1&
-      _M_h1() { return __ebo_h1::_S_get(*this); }
-
       const _H2&
       _M_h2() const { return __ebo_h2::_S_cget(*this); }
-
-      _H2&
-      _M_h2() { return __ebo_h2::_S_get(*this); }
     };
 
   /// Specialization: hash function and range-hashing function,
@@ -1410,28 +1397,20 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       std::swap(_M_extract(), __x._M_extract());
-       std::swap(_M_h1(), __x._M_h1());
-       std::swap(_M_h2(), __x._M_h2());
+       std::swap(__ebo_extract_key::_S_get(*this),
+                 __ebo_extract_key::_S_get(__x));
+       std::swap(__ebo_h1::_S_get(*this), __ebo_h1::_S_get(__x));
+       std::swap(__ebo_h2::_S_get(*this), __ebo_h2::_S_get(__x));
       }
 
       const _ExtractKey&
       _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
 
-      _ExtractKey&
-      _M_extract() { return __ebo_extract_key::_S_get(*this); }
-
       const _H1&
       _M_h1() const { return __ebo_h1::_S_cget(*this); }
 
-      _H1&
-      _M_h1() { return __ebo_h1::_S_get(*this); }
-
       const _H2&
       _M_h2() const { return __ebo_h2::_S_cget(*this); }
-
-      _H2&
-      _M_h2() { return __ebo_h2::_S_get(*this); }
     };
 
   /**
@@ -1840,14 +1819,11 @@ namespace __detail
     _M_swap(_Hashtable_base& __x)
     {
       __hash_code_base::_M_swap(__x);
-      std::swap(_M_eq(), __x._M_eq());
+      std::swap(_EqualEBO::_S_get(*this), _EqualEBO::_S_get(__x));
     }
 
     const _Equal&
     _M_eq() const { return _EqualEBO::_S_cget(*this); }
-
-    _Equal&
-    _M_eq() { return _EqualEBO::_S_get(*this); }
   };
 
   /**