Change EBO accessors from static to non-static member functions
authorJonathan Wakely <jwakely@redhat.com>
Thu, 16 May 2019 14:18:45 +0000 (15:18 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 16 May 2019 14:18:45 +0000 (15:18 +0100)
* include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
Replace with _M_get non-static member function.
(_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
member function.
(_Hash_code_base, _Local_iterator_base, _Hashtable_base):
(_Hashtable_alloc): Adjust to use non-static members of EBO helper.

From-SVN: r271290

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

index acb6b1766950a956aa216bfb15f8794517895c72..bb947cca088e9bbde4a16c807a6ee5f0004a0b50 100644 (file)
@@ -1,5 +1,12 @@
 2019-05-16  Jonathan Wakely  <jwakely@redhat.com>
 
+       * include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
+       Replace with _M_get non-static member function.
+       (_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
+       member function.
+       (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
+       (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
+
        * 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())
index b417a7d442c39be1e4b7ac780169d750491bb293..f7db7628c690305b646749f533b6e4decf9f3163 100644 (file)
@@ -1112,13 +1112,8 @@ namespace __detail
          : _Tp(std::forward<_OtherTp>(__tp))
        { }
 
-      static const _Tp&
-      _S_cget(const _Hashtable_ebo_helper& __eboh)
-      { return static_cast<const _Tp&>(__eboh); }
-
-      static _Tp&
-      _S_get(_Hashtable_ebo_helper& __eboh)
-      { return static_cast<_Tp&>(__eboh); }
+      const _Tp& _M_cget() const { return static_cast<const _Tp&>(*this); }
+      _Tp& _M_get() { return static_cast<_Tp&>(*this); }
     };
 
   /// Specialization not using EBO.
@@ -1132,13 +1127,8 @@ namespace __detail
          : _M_tp(std::forward<_OtherTp>(__tp))
        { }
 
-      static const _Tp&
-      _S_cget(const _Hashtable_ebo_helper& __eboh)
-      { return __eboh._M_tp; }
-
-      static _Tp&
-      _S_get(_Hashtable_ebo_helper& __eboh)
-      { return __eboh._M_tp; }
+      const _Tp& _M_cget() const { return _M_tp; }
+      _Tp& _M_get() { return _M_tp; }
 
     private:
       _Tp _M_tp;
@@ -1229,16 +1219,16 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       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));
+       std::swap(__ebo_extract_key::_M_get(),
+                 __x.__ebo_extract_key::_M_get());
+       std::swap(__ebo_hash::_M_get(), __x.__ebo_hash::_M_get());
       }
 
       const _ExtractKey&
-      _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
+      _M_extract() const { return __ebo_extract_key::_M_cget(); }
 
       const _Hash&
-      _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); }
+      _M_ranged_hash() const { return __ebo_hash::_M_cget(); }
     };
 
   // No specialization for ranged hash function while caching hash codes.
@@ -1317,20 +1307,20 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       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));
+       std::swap(__ebo_extract_key::_M_get(),
+                 __x.__ebo_extract_key::_M_get());
+       std::swap(__ebo_h1::_M_get(), __x.__ebo_h1::_M_get());
+       std::swap(__ebo_h2::_M_get(), __x.__ebo_h2::_M_get());
       }
 
       const _ExtractKey&
-      _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
+      _M_extract() const { return __ebo_extract_key::_M_cget(); }
 
       const _H1&
-      _M_h1() const { return __ebo_h1::_S_cget(*this); }
+      _M_h1() const { return __ebo_h1::_M_cget(); }
 
       const _H2&
-      _M_h2() const { return __ebo_h2::_S_cget(*this); }
+      _M_h2() const { return __ebo_h2::_M_cget(); }
     };
 
   /// Specialization: hash function and range-hashing function,
@@ -1397,20 +1387,20 @@ namespace __detail
       void
       _M_swap(_Hash_code_base& __x)
       {
-       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));
+       std::swap(__ebo_extract_key::_M_get(),
+                 __x.__ebo_extract_key::_M_get());
+       std::swap(__ebo_h1::_M_get(), __x.__ebo_h1::_M_get());
+       std::swap(__ebo_h2::_M_get(), __x.__ebo_h2::_M_get());
       }
 
       const _ExtractKey&
-      _M_extract() const { return __ebo_extract_key::_S_cget(*this); }
+      _M_extract() const { return __ebo_extract_key::_M_cget(); }
 
       const _H1&
-      _M_h1() const { return __ebo_h1::_S_cget(*this); }
+      _M_h1() const { return __ebo_h1::_M_cget(); }
 
       const _H2&
-      _M_h2() const { return __ebo_h2::_S_cget(*this); }
+      _M_h2() const { return __ebo_h2::_M_cget(); }
     };
 
   /**
@@ -1471,7 +1461,7 @@ namespace __detail
        if (_M_cur)
          {
            std::size_t __bkt
-             = __base_type::_S_get(*this)(_M_cur->_M_hash_code,
+             = __base_type::_M_get()(_M_cur->_M_hash_code,
                                           _M_bucket_count);
            if (__bkt != _M_bucket)
              _M_cur = nullptr;
@@ -1819,11 +1809,11 @@ namespace __detail
     _M_swap(_Hashtable_base& __x)
     {
       __hash_code_base::_M_swap(__x);
-      std::swap(_EqualEBO::_S_get(*this), _EqualEBO::_S_get(__x));
+      std::swap(_EqualEBO::_M_get(), __x._EqualEBO::_M_get());
     }
 
     const _Equal&
-    _M_eq() const { return _EqualEBO::_S_cget(*this); }
+    _M_eq() const { return _EqualEBO::_M_cget(); }
   };
 
   /**
@@ -2021,11 +2011,11 @@ namespace __detail
 
       __node_alloc_type&
       _M_node_allocator()
-      { return __ebo_node_alloc::_S_get(*this); }
+      { return __ebo_node_alloc::_M_get(); }
 
       const __node_alloc_type&
       _M_node_allocator() const
-      { return __ebo_node_alloc::_S_cget(*this); }
+      { return __ebo_node_alloc::_M_cget(); }
 
       template<typename... _Args>
        __node_type*