A *uniform random bit generator*
g of type G
is a function object
returning unsigned integer values
such that each value
in the range of possible results
has (ideally) equal probability
of being returned.

template<class G>
concept uniform_random_bit_generator =
invocable<G&> && unsigned_integral<invoke_result_t<G&>> &&
requires {
{ G::min() } -> same_as<invoke_result_t<G&>>;
{ G::max() } -> same_as<invoke_result_t<G&>>;
requires bool_constant<(G::min() < G::max())>::value;
};

A class G meets the *uniform random bit generator* requirements if
G models uniform_random_bit_generator,
invoke_result_t<G&> is an unsigned integer type ([basic.fundamental]),
and
G provides a nested *typedef-name* result_type
that denotes the same type as invoke_result_t<G&>.