https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85749

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Tue May 15 15:36:46 2018
New Revision: 260263

URL: https://gcc.gnu.org/viewcvs?rev=260263&root=gcc&view=rev
Log:
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.

Added:
   
trunk/libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq2.cc
   
trunk/libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq2.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/random.h
    trunk/libstdc++-v3/include/bits/random.tcc
    trunk/libstdc++-v3/include/ext/random
    trunk/libstdc++-v3/include/ext/random.tcc
    trunk/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc

Reply via email to