86 if constexpr (std::is_enum_v<T>) {
104 return T::hash_as(value);
118#define TRIVIAL_DEFAULT_INT_HASH(TYPE) \
119 template<> struct DefaultHash<TYPE> { \
120 uint64_t operator()(TYPE value) const \
122 return uint64_t(value); \
148 return uint64_t(*
reinterpret_cast<uint32_t *
>(&value));
155 return *
reinterpret_cast<uint64_t *
>(&value);
162 return uint64_t((value !=
false) * 1298191);
213 uintptr_t
ptr = uintptr_t(value);
222template<
size_t...
I,
typename... Args>
225 static_assert(
sizeof...(Args) ==
sizeof...(I));
232template<
typename T,
typename... Args>
250template<
typename T>
struct DefaultHash<std::reference_wrapper<T>> {
257template<
typename T1,
typename T2>
struct DefaultHash<std::pair<T1, T2>> {
#define TRIVIAL_DEFAULT_INT_HASH(TYPE)
ATTR_WARN_UNUSED_RESULT const BMVert * v
unsigned long long int uint64_t
static constexpr std::array< uint64_t, 3 > default_hash_factors
uint64_t get_default_hash_array(std::index_sequence< I... >, const Args &...args)
uint64_t hash_string(StringRef str)
uint64_t get_default_hash(const T &v, const Args &...args)
uint64_t operator()(StringRef value) const
uint64_t operator()(StringRef value) const
uint64_t operator()(const T *value) const
uint64_t operator()(bool value) const
uint64_t operator()(const T &value) const
uint64_t operator()(double value) const
uint64_t operator()(float value) const
uint64_t operator()(const std::pair< T1, T2 > &value) const
uint64_t operator()(const std::reference_wrapper< T > &value) const
uint64_t operator()(StringRef value) const
uint64_t operator()(StringRef value) const
uint64_t operator()(const T &value) const
uint64_t operator()(const U &value) const
uint64_t operator()(const U &value) const