Every function described in [rand.eng]
that has a function parameter q of type Sseq&
for a template type parameter named Sseq
that is different from type seed_seq
throws what and when the invocation of q.generate throws.
if the member function
template<class Sseq>void seed(Sseq& q);
is called with a type Sseq that does not qualify as a seed sequence, then this
function shall not participate in overload resolution.
The extent to which an implementation determines that a type cannot be a seed sequence
is unspecified, except that as a minimum a type shall not qualify as a seed sequence
if it is implicitly convertible to X::result_type.