aboutsummaryrefslogtreecommitdiffhomepage
path: root/absl/random/internal/distributions.h
diff options
context:
space:
mode:
Diffstat (limited to 'absl/random/internal/distributions.h')
-rw-r--r--absl/random/internal/distributions.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/absl/random/internal/distributions.h b/absl/random/internal/distributions.h
index 34db3b3..96f8bae 100644
--- a/absl/random/internal/distributions.h
+++ b/absl/random/internal/distributions.h
@@ -39,22 +39,20 @@ NumType UniformImpl(TagType tag,
"absl::Uniform<T>() must use an integer or real parameter type.");
using distribution_t =
- typename std::conditional<std::is_integral<NumType>::value,
- absl::uniform_int_distribution<NumType>,
- absl::uniform_real_distribution<NumType>>::type;
+ UniformDistributionWrapper<absl::decay_t<TagType>, NumType>;
using format_t = random_internal::DistributionFormatTraits<distribution_t>;
+ auto a = uniform_lower_bound(tag, lo, hi);
+ auto b = uniform_upper_bound(tag, lo, hi);
- auto a = random_internal::uniform_lower_bound<NumType>(tag, lo, hi);
- auto b = random_internal::uniform_upper_bound<NumType>(tag, lo, hi);
// TODO(lar): it doesn't make a lot of sense to ask for a random number in an
// empty range. Right now we just return a boundary--even though that
// boundary is not an acceptable value! Is there something better we can do
// here?
+ if (a > b) return a;
using gen_t = absl::decay_t<URBG>;
- if (a > b) return a;
return DistributionCaller<gen_t>::template Call<distribution_t, format_t>(
- &urbg, a, b);
+ &urbg, tag, lo, hi);
}
// In the absence of an explicitly provided return-type, the template