mirror of git://gcc.gnu.org/git/gcc.git
PR68925 don't use thread_local static for stateless object
PR libstdc++/68925 * include/experimental/random (randint): Use temporary instead of thread_local static. From-SVN: r244584
This commit is contained in:
parent
46c4e8a1cf
commit
b08fdbb845
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-01-18 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR libstdc++/68925
|
||||||
|
* include/experimental/random (randint): Use temporary instead of
|
||||||
|
thread_local static.
|
||||||
|
|
||||||
2017-01-17 Joshua Conner <joshconner@google.com>
|
2017-01-17 Joshua Conner <joshconner@google.com>
|
||||||
|
|
||||||
* crossconfig.m4: Add fuchsia OS.
|
* crossconfig.m4: Add fuchsia OS.
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
static_assert(is_integral<_IntType>::value && sizeof(_IntType) > 1,
|
static_assert(is_integral<_IntType>::value && sizeof(_IntType) > 1,
|
||||||
"argument must be an integer type");
|
"argument must be an integer type");
|
||||||
using _Dist = std::uniform_int_distribution<_IntType>;
|
using _Dist = std::uniform_int_distribution<_IntType>;
|
||||||
static thread_local _Dist __dist;
|
// This relies on the fact our uniform_int_distribution is stateless,
|
||||||
return __dist(_S_randint_engine(), typename _Dist::param_type{__a, __b});
|
// otherwise we'd need a static thread_local _Dist and pass it
|
||||||
|
// _Dist::param_type{__a, __b}.
|
||||||
|
return _Dist(__a, __b)(_S_randint_engine());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue