+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.
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.
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,
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); }
};
/**
_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); }
};
/**