Skip to content

Commit 36f706e

Browse files
committed
Make UniformRandom standard-conforming
std::uniform_int_distribution<T> requires sizeof(T) >= sizeof(short) Signed-off-by: Osyotr <[email protected]>
1 parent b880975 commit 36f706e

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

libs/base/random.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ class UniformRandom
1212

1313
std::random_device m_rd;
1414
std::mt19937 m_gen;
15-
std::uniform_int_distribution<T> m_distr;
15+
16+
using distribution_int_type = std::conditional_t<sizeof(T) != 1, T, std::conditional_t<std::is_signed_v<T>, short, unsigned short>>;
17+
std::uniform_int_distribution<distribution_int_type> m_distr;
1618

1719
public:
1820
UniformRandom(T min, T max) : m_gen(m_rd()), m_distr(min, max) {}
1921
UniformRandom() : UniformRandom(std::numeric_limits<T>::min(), std::numeric_limits<T>::max()) {}
2022

21-
T operator()() { return m_distr(m_gen); }
23+
T operator()() { return static_cast<T>(m_distr(m_gen)); }
2224
};
2325
} // namespace base

0 commit comments

Comments
 (0)