Skip to content

Commit 7d925b9

Browse files
authored
[libc++] Make __is_seed_sequence a variable template (#195420)
This makes things a bit more readable and improves compile times a bit.
1 parent fd51c78 commit 7d925b9

7 files changed

Lines changed: 18 additions & 22 deletions

libcxx/include/__random/discard_block_engine.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,9 @@ class discard_block_engine {
6464
_LIBCPP_HIDE_FROM_ABI explicit discard_block_engine(_Engine&& __e) : __e_(std::move(__e)), __n_(0) {}
6565
#endif // _LIBCPP_CXX03_LANG
6666
_LIBCPP_HIDE_FROM_ABI explicit discard_block_engine(result_type __sd) : __e_(__sd), __n_(0) {}
67-
template <
68-
class _Sseq,
69-
__enable_if_t<__is_seed_sequence<_Sseq, discard_block_engine>::value && !is_convertible<_Sseq, _Engine>::value,
70-
int> = 0>
67+
template <class _Sseq,
68+
__enable_if_t<__is_seed_sequence_v<_Sseq, discard_block_engine> && !is_convertible<_Sseq, _Engine>::value,
69+
int> = 0>
7170
_LIBCPP_HIDE_FROM_ABI explicit discard_block_engine(_Sseq& __q) : __e_(__q), __n_(0) {}
7271
_LIBCPP_HIDE_FROM_ABI void seed() {
7372
__e_.seed();
@@ -77,7 +76,7 @@ class discard_block_engine {
7776
__e_.seed(__sd);
7877
__n_ = 0;
7978
}
80-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, discard_block_engine>::value, int> = 0>
79+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, discard_block_engine>, int> = 0>
8180
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
8281
__e_.seed(__q);
8382
__n_ = 0;

libcxx/include/__random/independent_bits_engine.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@ class independent_bits_engine {
9494
_LIBCPP_HIDE_FROM_ABI explicit independent_bits_engine(result_type __sd) : __e_(__sd) {}
9595
template <
9696
class _Sseq,
97-
__enable_if_t<__is_seed_sequence<_Sseq, independent_bits_engine>::value && !is_convertible<_Sseq, _Engine>::value,
97+
__enable_if_t<__is_seed_sequence_v<_Sseq, independent_bits_engine> && !is_convertible<_Sseq, _Engine>::value,
9898
int> = 0>
9999
_LIBCPP_HIDE_FROM_ABI explicit independent_bits_engine(_Sseq& __q) : __e_(__q) {}
100100
_LIBCPP_HIDE_FROM_ABI void seed() { __e_.seed(); }
101101
_LIBCPP_HIDE_FROM_ABI void seed(result_type __sd) { __e_.seed(__sd); }
102-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, independent_bits_engine>::value, int> = 0>
102+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, independent_bits_engine>, int> = 0>
103103
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
104104
__e_.seed(__q);
105105
}

libcxx/include/__random/is_seed_sequence.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
_LIBCPP_BEGIN_NAMESPACE_STD
2222

2323
template <class _Sseq, class _Engine>
24-
struct __is_seed_sequence {
25-
static _LIBCPP_CONSTEXPR const bool value =
26-
!is_convertible<_Sseq, typename _Engine::result_type>::value && !is_same<__remove_cv_t<_Sseq>, _Engine>::value;
27-
};
24+
inline const bool __is_seed_sequence_v =
25+
!is_convertible<_Sseq, typename _Engine::result_type>::value && !is_same<__remove_cv_t<_Sseq>, _Engine>::value;
2826

2927
_LIBCPP_END_NAMESPACE_STD
3028

libcxx/include/__random/linear_congruential_engine.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,14 +265,14 @@ class linear_congruential_engine {
265265
#else
266266
_LIBCPP_HIDE_FROM_ABI explicit linear_congruential_engine(result_type __s = default_seed) { seed(__s); }
267267
#endif
268-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, linear_congruential_engine>::value, int> = 0>
268+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, linear_congruential_engine>, int> = 0>
269269
_LIBCPP_HIDE_FROM_ABI explicit linear_congruential_engine(_Sseq& __q) {
270270
seed(__q);
271271
}
272272
_LIBCPP_HIDE_FROM_ABI void seed(result_type __s = default_seed) {
273273
seed(integral_constant<bool, __m == 0>(), integral_constant<bool, __c == 0>(), __s);
274274
}
275-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, linear_congruential_engine>::value, int> = 0>
275+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, linear_congruential_engine>, int> = 0>
276276
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
277277
__seed(
278278
__q,

libcxx/include/__random/mersenne_twister_engine.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class mersenne_twister_engine {
172172
#else
173173
_LIBCPP_HIDE_FROM_ABI explicit mersenne_twister_engine(result_type __sd = default_seed) { seed(__sd); }
174174
#endif
175-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, mersenne_twister_engine>::value, int> = 0>
175+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, mersenne_twister_engine>, int> = 0>
176176
_LIBCPP_HIDE_FROM_ABI explicit mersenne_twister_engine(_Sseq& __q) {
177177
seed(__q);
178178
}
@@ -182,7 +182,7 @@ class mersenne_twister_engine {
182182
__x_[__i] = (__f * (__x_[__i - 1] ^ __rshift<__w - 2>(__x_[__i - 1])) + __i) & _Max;
183183
__i_ = 0;
184184
}
185-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, mersenne_twister_engine>::value, int> = 0>
185+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, mersenne_twister_engine>, int> = 0>
186186
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
187187
const unsigned __k = 1 + (__w - 1) / 32;
188188
static_assert(__k <= 2);

libcxx/include/__random/shuffle_order_engine.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,9 @@ class shuffle_order_engine {
8888
_LIBCPP_HIDE_FROM_ABI explicit shuffle_order_engine(_Engine&& __e) : __e_(std::move(__e)) { __init(); }
8989
#endif // _LIBCPP_CXX03_LANG
9090
_LIBCPP_HIDE_FROM_ABI explicit shuffle_order_engine(result_type __sd) : __e_(__sd) { __init(); }
91-
template <
92-
class _Sseq,
93-
__enable_if_t<__is_seed_sequence<_Sseq, shuffle_order_engine>::value && !is_convertible<_Sseq, _Engine>::value,
94-
int> = 0>
91+
template <class _Sseq,
92+
__enable_if_t<__is_seed_sequence_v<_Sseq, shuffle_order_engine> && !is_convertible<_Sseq, _Engine>::value,
93+
int> = 0>
9594
_LIBCPP_HIDE_FROM_ABI explicit shuffle_order_engine(_Sseq& __q) : __e_(__q) {
9695
__init();
9796
}
@@ -103,7 +102,7 @@ class shuffle_order_engine {
103102
__e_.seed(__sd);
104103
__init();
105104
}
106-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, shuffle_order_engine>::value, int> = 0>
105+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, shuffle_order_engine>, int> = 0>
107106
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
108107
__e_.seed(__q);
109108
__init();

libcxx/include/__random/subtract_with_carry_engine.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ class subtract_with_carry_engine {
8686
#else
8787
_LIBCPP_HIDE_FROM_ABI explicit subtract_with_carry_engine(result_type __sd = default_seed) { seed(__sd); }
8888
#endif
89-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, subtract_with_carry_engine>::value, int> = 0>
89+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, subtract_with_carry_engine>, int> = 0>
9090
_LIBCPP_HIDE_FROM_ABI explicit subtract_with_carry_engine(_Sseq& __q) {
9191
seed(__q);
9292
}
9393
_LIBCPP_HIDE_FROM_ABI void seed(result_type __sd = default_seed) {
9494
seed(__sd, integral_constant<unsigned, 1 + (__w - 1) / 32>());
9595
}
96-
template <class _Sseq, __enable_if_t<__is_seed_sequence<_Sseq, subtract_with_carry_engine>::value, int> = 0>
96+
template <class _Sseq, __enable_if_t<__is_seed_sequence_v<_Sseq, subtract_with_carry_engine>, int> = 0>
9797
_LIBCPP_HIDE_FROM_ABI void seed(_Sseq& __q) {
9898
__seed(__q, integral_constant<unsigned, 1 + (__w - 1) / 32>());
9999
}

0 commit comments

Comments
 (0)