#ifndef RANDOM_BASE_2019_01_24_H_ #define RANDOM_BASE_2019_01_24_H_ #include #include namespace al { namespace crypto { namespace random { template class random_base { public: using result_type = ResultType; using internal_type = InternalType; virtual ~random_base() = default; virtual result_type operator()() = 0; virtual void reseed(const internal_type = internal_type()) { } static result_type (min)() { return (std::numeric_limits::min)(); } static result_type (max)() { return (std::numeric_limits::max)(); } protected: random_base() = default; explicit random_base(const internal_type) { } random_base(const random_base&) = default; random_base& operator=(const random_base&) = default; }; } } } // al::crpyto::random #endif // RANDOM_BASE_2019_01_24_H_