Use a defined form of uniform_int_distribution
authorChristopher Dykes <cdykes@fb.com>
Sat, 2 Jul 2016 03:39:26 +0000 (20:39 -0700)
committerFacebook Github Bot 7 <facebook-github-bot-7-bot@fb.com>
Sat, 2 Jul 2016 03:53:25 +0000 (20:53 -0700)
Summary: As per http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution the behavior of using `uint8_t` as the template parameter is undefined, and is not supported on MSVC, so use `unsigned short` instead, which is a defined form.

Reviewed By: yfeldblum

Differential Revision: D3507309

fbshipit-source-id: c4c830371d08aee4a3de90bb394d22d92ad9a575

folly/test/FingerprintBenchmark.cpp
folly/test/HashBenchmark.cpp

index c0135a0920df1d079f606fdfefcb38fd5c8c0fb3..a38b8e31b81b318b30c27e968c5a379b0b8de2dc 100644 (file)
@@ -43,7 +43,7 @@ void initialize() {
   // word length = uniformly distributed between 1 and 10
   // charset = 0x20 - 0x7f
   std::uniform_int_distribution<size_t> term_len(1, 10);
-  std::uniform_int_distribution<uint8_t> term_char(0x20, 0x7f);
+  std::uniform_int_distribution<uint16_t> term_char(0x20, 0x7f);
   for (int i = 0; i < kMaxTerms; i++) {
     std::string& term = terms[i];
     int len = term_len(rng);
index eaf06e78dc4f3c80d2160ef785cd500ebbcfa66f..f62223ef7a290cb420a3700fec97148b14c6791b 100644 (file)
@@ -34,7 +34,7 @@ namespace detail {
 std::vector<uint8_t> randomBytes(size_t n) {
   std::vector<uint8_t> ret(n);
   std::default_random_engine rng(1729);  // Deterministic seed.
-  std::uniform_int_distribution<uint8_t> dist(0, 255);
+  std::uniform_int_distribution<uint16_t> dist(0, 255);
   std::generate(ret.begin(), ret.end(), [&] () { return dist(rng); });
   return ret;
 }