mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-04 14:14:09 +00:00
fix Sseq SFINAE
This commit is contained in:
parent
e03f53f0d2
commit
a32b1c7c00
7 changed files with 65 additions and 30 deletions
|
@ -16,6 +16,8 @@
|
|||
#include <sprout/random/detail/const_mod.hpp>
|
||||
#include <sprout/random/detail/seed_impl.hpp>
|
||||
#include <sprout/random/random_result.hpp>
|
||||
#include <sprout/random/type_traits.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
#include <sprout/math/greater_equal.hpp>
|
||||
#include <sprout/assert.hpp>
|
||||
|
||||
|
@ -58,11 +60,11 @@ namespace sprout {
|
|||
static SPROUT_CONSTEXPR result_type init_seed(result_type x0 = default_seed) {
|
||||
return init_seed_1(modulus == 0 ? x0 : x0 % modulus);
|
||||
}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
static SPROUT_CXX14_CONSTEXPR result_type init_seed(Sseq& seq) {
|
||||
return init_seed(sprout::random::detail::seed_one_int<result_type, modulus>(seq));
|
||||
}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
static SPROUT_CONSTEXPR result_type init_seed(Sseq const& seq) {
|
||||
return init_seed(sprout::random::detail::seed_one_int<result_type, modulus>(seq));
|
||||
}
|
||||
|
@ -89,11 +91,11 @@ namespace sprout {
|
|||
explicit SPROUT_CONSTEXPR linear_congruential_engine(result_type x0)
|
||||
: x_(init_seed(x0))
|
||||
{}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
explicit SPROUT_CXX14_CONSTEXPR linear_congruential_engine(Sseq& seq)
|
||||
: x_(init_seed(seq))
|
||||
{}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
explicit SPROUT_CONSTEXPR linear_congruential_engine(Sseq const& seq)
|
||||
: x_(init_seed(seq))
|
||||
{}
|
||||
|
@ -104,11 +106,11 @@ namespace sprout {
|
|||
SPROUT_CXX14_CONSTEXPR void seed(result_type x0 = default_seed) {
|
||||
x_ = init_seed(x0);
|
||||
}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
SPROUT_CXX14_CONSTEXPR void seed(Sseq& seq) {
|
||||
x_ = init_seed(seq);
|
||||
}
|
||||
template<typename Sseq>
|
||||
template<typename Sseq, typename sprout::enabler_if<sprout::random::is_seed_seq<Sseq>::value>::type = sprout::enabler>
|
||||
SPROUT_CXX14_CONSTEXPR void seed(Sseq const& seq) {
|
||||
x_ = init_seed(seq);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue