57 if (state_ == Occupied) {
58 key_buffer_.
ref().~Key();
68 state_ = other.state_;
69 if (other.state_ == Occupied) {
70 new (&key_buffer_)
Key(*other.key_buffer_);
81 state_ = other.state_;
82 if (other.state_ == Occupied) {
83 new (&key_buffer_)
Key(std::move(*other.key_buffer_));
108 return state_ == Occupied;
116 return state_ == Empty;
126 return hash(*key_buffer_);
133 template<
typename ForwardKey,
typename IsEqual>
136 if (state_ == Occupied) {
137 return is_equal(
key, *key_buffer_);
149 new (&key_buffer_)
Key(std::forward<ForwardKey>(
key));
159 key_buffer_.
ref().~Key();
188 if (state_ == Occupied) {
189 key_buffer_.
ref().~Key();
195 state_ = other.state_;
196 if (other.state_ == Occupied) {
198 new (&key_buffer_)
Key(*other.key_buffer_);
204 state_ = other.state_;
205 if (other.state_ == Occupied) {
207 new (&key_buffer_)
Key(std::move(*other.key_buffer_));
223 return state_ == Occupied;
228 return state_ == Empty;
237 template<
typename ForwardKey,
typename IsEqual>
242 if (state_ == Occupied) {
243 return is_equal(
key, *key_buffer_);
252 new (&key_buffer_)
Key(std::forward<ForwardKey>(
key));
260 key_buffer_.
ref().~Key();
275 Key key_ = KeyInfo::get_empty();
296 return KeyInfo::is_not_empty_or_removed(key_);
301 return KeyInfo::is_empty(key_);
310 template<
typename ForwardKey,
typename IsEqual>
314 return is_equal(key_,
key);
321 key_ = std::forward<ForwardKey>(
key);
327 KeyInfo::remove(key_);
335template<
typename Int, Int EmptyValue, Int RemovedValue>
HashedSetSlot(HashedSetSlot &&other) noexcept(std::is_nothrow_move_constructible_v< Key >)
uint64_t get_hash(const Hash &) const
bool contains(const ForwardKey &key, const IsEqual &is_equal, const uint64_t hash) const
void occupy(ForwardKey &&key, const uint64_t hash)
HashedSetSlot(const HashedSetSlot &other)
IntrusiveSetSlot()=default
uint64_t get_hash(const Hash &hash) const
IntrusiveSetSlot(IntrusiveSetSlot &&other) noexcept(std::is_nothrow_move_constructible_v< Key >)=default
IntrusiveSetSlot(const IntrusiveSetSlot &other)=default
void occupy(ForwardKey &&key, const uint64_t)
bool contains(const ForwardKey &key, const IsEqual &is_equal, const uint64_t) const
~IntrusiveSetSlot()=default
bool contains(const ForwardKey &key, const IsEqual &is_equal, uint64_t) const
SimpleSetSlot(SimpleSetSlot &&other) noexcept(std::is_nothrow_move_constructible_v< Key >)
uint64_t get_hash(const Hash &hash) const
SimpleSetSlot(const SimpleSetSlot &other)
void occupy(ForwardKey &&key, uint64_t)
unsigned __int64 uint64_t