cMHN 1.2
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
distribution.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_CORE_RANDOM_DISTRIBUTION_H
4#define pRC_CORE_RANDOM_DISTRIBUTION_H
5
7
8namespace pRC
9{
10 template<class F>
11 class RandomDistribution : public CRTP<F>
12 {
13 public:
14 constexpr decltype(auto) reset()
15 {
16 return this->self().reset();
17 }
18
19 constexpr decltype(auto) min()
20 {
21 return this->self().min();
22 }
23
24 constexpr decltype(auto) max()
25 {
26 return this->self().max();
27 }
28
29 template<class URNG>
30 constexpr decltype(auto) operator()(URNG &rng)
31 {
32 return (this->self())(rng);
33 }
34
35 protected:
37 constexpr RandomDistribution(RandomDistribution const &) = default;
38 constexpr RandomDistribution(RandomDistribution &&) = default;
40 RandomDistribution const &) = default;
42 RandomDistribution &&) = default;
43 constexpr RandomDistribution() = default;
44 };
45
46 template<class T>
47 concept IsRandomDistribution = !IsReference<T> && requires {
48 {
49 []<class F>(RandomDistribution<F> const &&)
50 {
51 }(std::declval<T>())
52 };
53 };
54}
55#endif // pRC_CORE_RANDOM_DISTRIBUTION_H
Definition crtp.hpp:12
constexpr decltype(auto) self() &
Definition crtp.hpp:30
Definition distribution.hpp:12
constexpr decltype(auto) min()
Definition distribution.hpp:19
constexpr RandomDistribution(RandomDistribution &&)=default
constexpr RandomDistribution()=default
constexpr RandomDistribution & operator=(RandomDistribution &&)=default
constexpr RandomDistribution(RandomDistribution const &)=default
constexpr decltype(auto) reset()
Definition distribution.hpp:14
constexpr RandomDistribution & operator=(RandomDistribution const &)=default
constexpr decltype(auto) max()
Definition distribution.hpp:24
Definition distribution.hpp:47
Definition concepts.hpp:19
Definition cholesky.hpp:10