Skip to content

Commit ef4402a

Browse files
r-barnesmeta-codesync[bot]
authored andcommitted
folly/random: replace SFINAE with C++20 concepts in seed_seq
Summary: Convert 3 separate enable_if_t template parameters on seed_seq_generate_fn::operator() to a single combined requires clause. Convert make_std_seed_seq_fn::operator() enable_if_t to requires. Differential Revision: D101660201 fbshipit-source-id: 775a97944114c6efed0f7083a88f377a6fedf9c9
1 parent 0d8c788 commit ef4402a

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

folly/random/seed_seq.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#pragma once
1818

19+
#include <concepts>
1920
#include <cstring>
2021
#include <random>
2122
#include <type_traits>
@@ -44,13 +45,11 @@ struct seed_seq_generate_fn {
4445
traits::is_nothrow_invocable_v<T&, R*, R*>;
4546

4647
public:
47-
template <
48-
typename SeedSeq,
49-
typename Word,
50-
std::size_t Size,
51-
std::enable_if_t<std::is_trivially_copyable_v<Word>, int> = 0,
52-
std::enable_if_t<Size != dynamic_extent, int> = 0,
53-
std::enable_if_t<seq_inv_v<SeedSeq>, int> = 0>
48+
template <typename SeedSeq, typename Word, std::size_t Size>
49+
requires(
50+
std::is_trivially_copyable_v<Word> && //
51+
(Size != dynamic_extent) && //
52+
seq_inv_v<SeedSeq>)
5453
void operator()(span<Word, Size> dst, SeedSeq& seq) const //
5554
noexcept(seq_nx_inv_v<SeedSeq>) {
5655
using out_t = typename SeedSeq::result_type;
@@ -70,9 +69,8 @@ constexpr inline seed_seq_generate_fn seed_seq_generate{};
7069
/// Handles mismatches between the std::seed_seq result-type and the input value
7170
/// type.
7271
struct make_std_seed_seq_fn {
73-
template <
74-
typename Word,
75-
std::enable_if_t<is_non_bool_integral_v<Word>, int> = 0>
72+
template <typename Word>
73+
requires is_non_bool_integral_v<Word>
7674
std::seed_seq operator()(Word word) const {
7775
using val_t = std::seed_seq::result_type;
7876
constexpr auto vals_sz = (sizeof(Word) + sizeof(val_t) - 1) / sizeof(val_t);

0 commit comments

Comments
 (0)