RandomNumberGenerator

A concept for RandomMixin-based random number generators.

Synopsis

Declared in <random.h>

template<typename T>
concept RandomNumberGenerator = requires(T& rng, std::span<std::byte> s) {
    // A random number generator must provide rand64().
    { rng.rand64() } noexcept -> std::same_as<uint64_t>;
    // A random number generator must derive from RandomMixin, which adds other rand* functions.
    requires std::derived_from<std::remove_reference_t<T>, RandomMixin<std::remove_reference_t<T>>>;
};