35 #ifndef ABSL_CONTAINER_NODE_HASH_SET_H_ 36 #define ABSL_CONTAINER_NODE_HASH_SET_H_ 38 #include <type_traits> 47 namespace container_internal {
91 template <
class T,
class Hash = absl::container_
internal::hash_default_hash<T>,
92 class Eq = absl::container_
internal::hash_default_eq<T>,
93 class Alloc = std::allocator<T>>
96 absl::container_internal::NodeHashSetPolicy<T>, Hash, Eq, Alloc> {
170 using Base::capacity;
183 using Base::max_size;
293 using Base::emplace_hint;
362 using Base::contains;
376 using Base::equal_range;
388 using Base::bucket_count;
394 using Base::load_factor;
412 using Base::max_load_factor;
417 using Base::get_allocator;
423 using Base::hash_function;
431 typename
Base::
hasher hash_funct() {
return this->hash_function(); }
437 namespace container_internal {
440 struct NodeHashSetPolicy
446 template <
class Allocator,
class... Args>
450 ValueAlloc value_alloc(*alloc);
453 std::forward<Args>(args)...);
457 template <
class Allocator>
461 ValueAlloc value_alloc(*alloc);
466 template <
class F,
class... Args>
468 std::declval<F>(), std::declval<Args>()...))
469 apply(F&& f, Args&&... args) {
471 std::forward<F>(f), std::forward<Args>(args)...);
478 namespace container_algorithm_internal {
481 template <
class Key,
class Hash,
class KeyEqual,
class Allocator>
488 #endif // ABSL_CONTAINER_NODE_HASH_SET_H_
hash_default_eq< T > key_eq
raw_hash_set() noexcept(std::is_nothrow_default_constructible< hasher >::value &&std::is_nothrow_default_constructible< key_equal >::value &&std::is_nothrow_default_constructible< allocator_type >::value)
static void deallocate(Alloc &a, pointer p, size_type n)
static void delete_element(Allocator *alloc, T *elem)
ABSL_DEPRECATED("absl::bit_cast type requirements were violated. Update the types being " "used such that they are the same size and are both TriviallyCopyable.") inline Dest bit_cast(const Source &source)
decltype(std::declval< F >()(std::declval< const Arg & >(), std::declval< Arg >())) DecomposeValue(F &&f, Arg &&arg)
static void destroy(Alloc &a, T *p)
static pointer allocate(Alloc &a, size_type n)
static size_t element_space_used(const T *)
std::true_type constant_iterators
void swap(absl::InlinedVector< T, N, A > &a, absl::InlinedVector< T, N, A > &b) noexcept(noexcept(a.swap(b)))
static T * new_element(Allocator *alloc, Args &&... args)
auto apply(Functor &&functor, Tuple &&t) -> decltype(utility_internal::apply_helper(absl::forward< Functor >(functor), absl::forward< Tuple >(t), absl::make_index_sequence< std::tuple_size< typename std::remove_reference< Tuple >::type >::value >
typename node_hash_set::raw_hash_set Base
std::allocator< int > alloc
static void construct(Alloc &a, T *p, Args &&... args)