The C++11 "Final Draft International Standard" (FDIS n3290.pdf) fixes a defect in the "Final Committee Draft" (FCD n3092.pdf), swapping the use of the intermediate variables r3 and r4 in the std::seed_seq::generate() function. See 25.5.7.1 paragraph 8c. This patch brings libstdc++ up-to-date: salmonj@drdlogin0039.en.desres$ diff -u oldrandom.tcc random.tcc --- oldrandom.tcc 2011-09-19 10:04:46.836512000 -0400 +++ random.tcc 2011-09-24 17:45:02.879621416 -0400 @@ -2796,8 +2796,8 @@ _Type __r4 = __r3 - __k % __n; __r4 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value>(__r4); - __begin[(__k + __p) % __n] ^= __r4; - __begin[(__k + __q) % __n] ^= __r3; + __begin[(__k + __p) % __n] ^= __r3; + __begin[(__k + __q) % __n] ^= __r4; __begin[__k % __n] = __r4; } } salmonj@drdlogin0039.en.desres$
Ok, thanks.
Author: paolo Date: Sat Sep 24 22:34:50 2011 New Revision: 179149 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=179149 Log: 2011-09-24 John Salmon <john.salmon@deshaw.com> PR libstdc++/50510 * include/bits/random.tcc (seed_seq::generate): Fix computation. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/random.tcc
Author: paolo Date: Sat Sep 24 22:35:02 2011 New Revision: 179150 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=179150 Log: 2011-09-24 John Salmon <john.salmon@deshaw.com> PR libstdc++/50510 * include/bits/random.tcc (seed_seq::generate): Fix computation. Modified: branches/gcc-4_6-branch/libstdc++-v3/ChangeLog branches/gcc-4_6-branch/libstdc++-v3/include/bits/random.tcc
Done.