[rand.eng.general] (original) (raw)

29 Numerics library [numerics]

29.5 Random number generation [rand]

29.5.4 Random number engine class templates [rand.eng]

29.5.4.1 General [rand.eng.general]

Except where specified otherwise, the complexity of each function specified in [rand.eng]is constant.

Except where specified otherwise, no function described in [rand.eng]throws an exception.

Every function described in [rand.eng]that has a function parameter q of type Sseq&for a template type parameter named Sseqthat is different from type seed_seqthrows what and when the invocation of q.generate throws.

Descriptions are provided in [rand.eng]only for engine operations that are not described in [rand.req.eng]or for operations where there is additional semantic information.

In particular, declarations for copy constructors, for copy assignment operators, for streaming operators, and for equality and inequality operators are not shown in the synopses.

Each template specified in [rand.eng]requires one or more relationships, involving the value(s) of its constant template parameter(s), to hold.

A program instantiating any of these templates is ill-formed if any such required relationship fails to hold.

For every random number engine and for every random number engine adaptor Xdefined in [rand.eng] and in [rand.adapt]:

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.