Faker C++
Loading...
Searching...
No Matches
random_generator.h
Go to the documentation of this file.
1#pragma once
2
3#include <random>
4#include <type_traits>
5
6namespace faker
7{
8template <typename T>
9 requires std::uniform_random_bit_generator<T>
10
12{
13public:
14 RandomGenerator() : generator_{T(std::random_device{}())} {}
15
16 explicit RandomGenerator(const T& other) : generator_{other} {}
17
18 ~RandomGenerator() = default;
19
24
25 template <typename Dist>
26 requires std::is_invocable_r_v<int, Dist&, T&>
27
28 typename T::result_type operator()(Dist&& dist)
29 {
30 return std::forward<Dist>(dist)(generator_);
31 }
32
33private:
35};
36}
T::result_type operator()(Dist &&dist)
Definition random_generator.h:28
RandomGenerator()
Definition random_generator.h:14
RandomGenerator & operator=(const RandomGenerator &)=default
RandomGenerator(const RandomGenerator &)=default
RandomGenerator(const T &other)
Definition random_generator.h:16
T generator_
Definition random_generator.h:34
RandomGenerator & operator=(RandomGenerator &&)=default
RandomGenerator(RandomGenerator &&)=default
Definition airline.h:9