|
typedef std::uniform_real_distribution<float> D; |
|
typedef D::param_type param_type; |
|
param_type p(5); |
|
assert(p.a() == 5); |
|
assert(p.b() == 1); |
This violates the Standard's preconditions, and MSVC's STL asserts about it. The Standardese is N4986 [rand.req.dist]/9:
For each of the constructors of D taking arguments corresponding to parameters of the distribution, P shall have a corresponding constructor subject to the same requirements and taking arguments identical in number, type, and default values.
And [rand.dist.uni.real]/2:
explicit uniform_real_distribution(RealType a, RealType b = 1.0);
Preconditions: a <= b and b - a <= numeric_limits<RealType>::max().
llvm-project/libcxx/test/std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp
Lines 32 to 36 in ccae7b4
This violates the Standard's preconditions, and MSVC's STL asserts about it. The Standardese is N4986 [rand.req.dist]/9:
And [rand.dist.uni.real]/2: