mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2025-08-03 12:49:50 +00:00
variate_generator 追加
This commit is contained in:
parent
4a345e8259
commit
8b357a75da
3 changed files with 158 additions and 0 deletions
73
sprout/random/detail/ptr_helper.hpp
Normal file
73
sprout/random/detail/ptr_helper.hpp
Normal file
|
@ -0,0 +1,73 @@
|
|||
#ifndef SPROUT_RANDOM_DETAIL_PTR_HELPER_HPP
|
||||
#define SPROUT_RANDOM_DETAIL_PTR_HELPER_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
|
||||
namespace sprout {
|
||||
namespace random {
|
||||
namespace detail {
|
||||
template<typename T>
|
||||
struct ptr_helper {
|
||||
typedef T value_type;
|
||||
typedef T& reference_type;
|
||||
typedef T const& const_reference_type;
|
||||
typedef T const& rvalue_type;
|
||||
static reference_type ref(T& r) {
|
||||
return r;
|
||||
}
|
||||
static SPROUT_CONSTEXPR const_reference_type ref(T const& r) {
|
||||
return r;
|
||||
}
|
||||
};
|
||||
template<typename T>
|
||||
struct ptr_helper<T&> {
|
||||
typedef T value_type;
|
||||
typedef T& reference_type;
|
||||
typedef T const& const_reference_type;
|
||||
typedef T& rvalue_type;
|
||||
static reference_type ref(T& r) {
|
||||
return r;
|
||||
}
|
||||
static SPROUT_CONSTEXPR const_reference_type ref(T const& r) {
|
||||
return r;
|
||||
}
|
||||
};
|
||||
template<typename T>
|
||||
struct ptr_helper<T const&> {
|
||||
typedef T value_type;
|
||||
typedef T const& reference_type;
|
||||
typedef T const& const_reference_type;
|
||||
typedef T const& rvalue_type;
|
||||
static SPROUT_CONSTEXPR const_reference_type ref(T const& r) {
|
||||
return r;
|
||||
}
|
||||
};
|
||||
template<typename T>
|
||||
struct ptr_helper<T*> {
|
||||
typedef T value_type;
|
||||
typedef T& reference_type;
|
||||
typedef T const& const_reference_type;
|
||||
typedef T* rvalue_type;
|
||||
static reference_type ref(T* p) {
|
||||
return *p;
|
||||
}
|
||||
static SPROUT_CONSTEXPR const_reference_type ref(T const* p) {
|
||||
return *p;
|
||||
}
|
||||
};
|
||||
template<typename T>
|
||||
struct ptr_helper<T const*> {
|
||||
typedef T value_type;
|
||||
typedef T const& reference_type;
|
||||
typedef T const& const_reference_type;
|
||||
typedef T const* rvalue_type;
|
||||
static SPROUT_CONSTEXPR const_reference_type ref(T const* p) {
|
||||
return *p;
|
||||
}
|
||||
};
|
||||
} // namespace detail
|
||||
} // namespace random
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_RANDOM_DETAIL_PTR_HELPER_HPP
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue