5a7960da41
Constrain constructors and member functions of random number engines so that functions taking seed sequences can only be called with types that meet the seed sequence requirements. PR libstdc++/85749 * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper. (linear_congruential_engine, mersenne_twister_engine) (subtract_with_carry_engine, discard_block_engine) (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to constrain function templates taking seed sequences. * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&)) (mersenne_twister_engine::seed(_Sseq&)) (subtract_with_carry_engine::seed(_Sseq&)): Change return types to match declarations. * include/ext/random (simd_fast_mersenne_twister_engine): Use __is_seed_seq to constrain function templates taking seed sequences. * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed): Change return type to match declaration. * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc: New. * testsuite/26_numerics/random/independent_bits_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/cons/ seed_seq2.cc: New. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/cons/ seed_seq2.cc: New. * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/ seed_seq2.cc: New. From-SVN: r260263 |
||
---|---|---|
.. | ||
bernoulli_distribution | ||
binomial_distribution | ||
cauchy_distribution | ||
chi_squared_distribution | ||
discard_block_engine | ||
discrete_distribution | ||
exponential_distribution | ||
extreme_value_distribution | ||
fisher_f_distribution | ||
gamma_distribution | ||
geometric_distribution | ||
independent_bits_engine | ||
linear_congruential_engine | ||
lognormal_distribution | ||
mersenne_twister_engine | ||
negative_binomial_distribution | ||
normal_distribution | ||
piecewise_constant_distribution | ||
piecewise_linear_distribution | ||
poisson_distribution | ||
random_device | ||
seed_seq | ||
shuffle_order_engine | ||
student_t_distribution | ||
subtract_with_carry_engine | ||
uniform_int_distribution | ||
uniform_real_distribution | ||
weibull_distribution | ||
default_random_engine.cc | ||
knuth_b.cc | ||
minstd_rand0.cc | ||
minstd_rand.cc | ||
mt19937_64.cc | ||
mt19937.cc | ||
pr60037-neg.cc | ||
ranlux24_base.cc | ||
ranlux24.cc | ||
ranlux48_base.cc | ||
ranlux48.cc |