namespace tsl::detail_robin_hash

Overview

namespace detail_robin_hash {

// typedefs

typedef std::uint64_t slz_size_type;
typedef std::uint32_t truncated_hash_type;

// structs

template <typename T>
struct has_is_transparent<T, typename make_void<typename T::is_transparent>::type>;

template <typename T, typename = void>
struct has_is_transparent;

template <typename U>
struct is_power_of_two_policy;

template <std::size_t GrowthFactor>
struct is_power_of_two_policy<tsl::rh::power_of_two_growth_policy<GrowthFactor>>;

template <typename T>
struct make_void;

// classes

template <typename ValueType, bool StoreHash>
class bucket_entry;

template <bool StoreHash>
class bucket_entry_hash;

template <>
class bucket_entry_hash<true>;

template <
    class ValueType,
    class KeySelect,
    class ValueSelect,
    class Hash,
    class KeyEqual,
    class Allocator,
    bool StoreHash,
    class GrowthPolicy
    >
class robin_hash;

// global functions

template <class T>
const T& clamp(
    const T& v,
    const T& lo,
    const T& hi
    );

template <typename T, typename U>
static T numeric_cast(
    U value,
    const char* error_message = "numeric_cast() failed."
    );

template <class T, class Deserializer>
static T deserialize_value(Deserializer& deserializer);

} // namespace detail_robin_hash

Typedefs

typedef std::uint64_t slz_size_type

Fixed size type used to represent size_type values on serialization. Need to be big enough to represent a std::size_t on 32 and 64 bits platforms, and must be the same size on both platforms.