18 #ifndef ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_ 19 #define ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_ 26 #include <type_traits> 34 namespace container_internal {
35 namespace hash_internal {
36 namespace generator_internal {
38 template <
class Container,
class =
void>
39 struct IsMap : std::false_type {};
59 return o << static_cast<uint64_t>(ec);
62 template <
class T,
class E =
void>
66 struct Generator<T, typename
std::enable_if<std::is_integral<T>::value>::type> {
68 std::uniform_int_distribution<T> dist;
76 std::uniform_int_distribution<typename std::underlying_type<Enum>::type>
81 return static_cast<Enum>(variate);
89 std::uniform_int_distribution<
90 typename std::underlying_type<EnumClass>::type>
102 std::string operator()()
const;
117 template <
class K,
class V>
125 template <
class... Ts>
134 decltype(std::declval<U&>().value())>>
136 typename std::decay<decltype(std::declval<U&>().key())>::type,
137 typename std::decay<decltype(std::declval<U&>().value())>::type>> {};
139 template <
class Container>
144 typename Container::key_type>::type>&>()());
150 #endif // ABSL_CONTAINER_INTERNAL_HASH_GENERATOR_TESTING_H_
std::pair< K, V > operator()() const
std::tuple< Ts... > operator()() const
NonStandardLayout operator()() const
EnumClass operator()() const
std::pair< std::string, std::string > pair
typename type_traits_internal::VoidTImpl< Ts... >::type void_t
std::ostream & operator<<(std::ostream &o, const EnumClass &ec)
std::mt19937_64 * GetSharedRng()
decltype(std::declval< const Generator< typename std::conditional< generator_internal::IsMap< Container >::value, typename Container::value_type, typename Container::key_type >::type > & >()()) GeneratedType