mirror of
https://github.com/greg7mdp/parallel-hashmap.git
synced 2026-08-29 08:34:39 +08:00
Fix sanitizer issue in test code.
This commit is contained in:
Vendored
+7
-17
@@ -76,7 +76,7 @@ std::mt19937_64* GetSharedRng() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
enum Enum {
|
enum Enum : uint64_t {
|
||||||
kEnumEmpty,
|
kEnumEmpty,
|
||||||
kEnumDeleted,
|
kEnumDeleted,
|
||||||
};
|
};
|
||||||
@@ -96,34 +96,24 @@ struct Generator;
|
|||||||
template <class T>
|
template <class T>
|
||||||
struct Generator<T, typename std::enable_if<std::is_integral<T>::value>::type> {
|
struct Generator<T, typename std::enable_if<std::is_integral<T>::value>::type> {
|
||||||
T operator()() const {
|
T operator()() const {
|
||||||
std::uniform_int_distribution<T> dist;
|
std::uniform_int_distribution<T> dist;
|
||||||
return dist(*GetSharedRng());
|
return dist(*GetSharedRng());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct Generator<Enum> {
|
struct Generator<Enum> {
|
||||||
Enum operator()() const {
|
Enum operator()() const {
|
||||||
std::uniform_int_distribution<typename std::underlying_type<Enum>::type> dist;
|
std::uniform_int_distribution<typename std::underlying_type<Enum>::type> dist;
|
||||||
|
return static_cast<Enum>(dist(*GetSharedRng()));
|
||||||
while (true) {
|
|
||||||
auto variate = dist(*GetSharedRng());
|
|
||||||
if (variate != kEnumEmpty && variate != kEnumDeleted)
|
|
||||||
return static_cast<Enum>(variate);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct Generator<EnumClass> {
|
struct Generator<EnumClass> {
|
||||||
EnumClass operator()() const {
|
EnumClass operator()() const {
|
||||||
std::uniform_int_distribution<
|
std::uniform_int_distribution<typename std::underlying_type<EnumClass>::type> dist;
|
||||||
typename std::underlying_type<EnumClass>::type> dist;
|
return static_cast<EnumClass>(dist(*GetSharedRng()));
|
||||||
while (true) {
|
|
||||||
EnumClass variate = static_cast<EnumClass>(dist(*GetSharedRng()));
|
|
||||||
if (variate != EnumClass::kEmpty && variate != EnumClass::kDeleted)
|
|
||||||
return static_cast<EnumClass>(variate);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user