gcc/libstdc++-v3/testsuite/26_numerics
Jonathan Wakely 5a7960da41 PR libstdc++/85749 constrain seed sequences for random number engines
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
2018-05-15 16:36:46 +01:00
..
accumulate Update copyright years. 2018-01-03 11:03:58 +01:00
adjacent_difference Update copyright years. 2018-01-03 11:03:58 +01:00
complex Update copyright years. 2018-01-03 11:03:58 +01:00
gcd Update copyright years. 2018-01-03 11:03:58 +01:00
headers Update copyright years. 2018-01-03 11:03:58 +01:00
inner_product Update copyright years. 2018-01-03 11:03:58 +01:00
iota Update copyright years. 2018-01-03 11:03:58 +01:00
lcm Update copyright years. 2018-01-03 11:03:58 +01:00
partial_sum Update copyright years. 2018-01-03 11:03:58 +01:00
random PR libstdc++/85749 constrain seed sequences for random number engines 2018-05-15 16:36:46 +01:00
slice Update copyright years. 2018-01-03 11:03:58 +01:00
slice_array Update copyright years. 2018-01-03 11:03:58 +01:00
valarray PR libstdc++/83860 avoid dangling references in valarray closure types 2018-05-02 17:41:46 +01:00