tmp/tmp7w0ufol0/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### General <a id="rand.eng.general">[[rand.eng.general]]</a>
|
| 2 |
+
|
| 3 |
+
Each type instantiated from a class template specified in [[rand.eng]]
|
| 4 |
+
meets the requirements of a random number engine [[rand.req.eng]] type.
|
| 5 |
+
|
| 6 |
+
Except where specified otherwise, the complexity of each function
|
| 7 |
+
specified in [[rand.eng]] is constant.
|
| 8 |
+
|
| 9 |
+
Except where specified otherwise, no function described in [[rand.eng]]
|
| 10 |
+
throws an exception.
|
| 11 |
+
|
| 12 |
+
Every function described in [[rand.eng]] that has a function parameter
|
| 13 |
+
`q` of type `Sseq&` for a template type parameter named `Sseq` that is
|
| 14 |
+
different from type `seed_seq` throws what and when the invocation of
|
| 15 |
+
`q.generate` throws.
|
| 16 |
+
|
| 17 |
+
Descriptions are provided in [[rand.eng]] only for engine operations
|
| 18 |
+
that are not described in [[rand.req.eng]] or for operations where there
|
| 19 |
+
is additional semantic information. In particular, declarations for copy
|
| 20 |
+
constructors, for copy assignment operators, for streaming operators,
|
| 21 |
+
and for equality and inequality operators are not shown in the synopses.
|
| 22 |
+
|
| 23 |
+
Each template specified in [[rand.eng]] requires one or more
|
| 24 |
+
relationships, involving the value(s) of its non-type template
|
| 25 |
+
parameter(s), to hold. A program instantiating any of these templates is
|
| 26 |
+
ill-formed if any such required relationship fails to hold.
|
| 27 |
+
|
| 28 |
+
For every random number engine and for every random number engine
|
| 29 |
+
adaptor `X` defined in [[rand.eng]] and in [[rand.adapt]]:
|
| 30 |
+
|
| 31 |
+
- if the constructor
|
| 32 |
+
``` cpp
|
| 33 |
+
template<class Sseq> explicit X(Sseq& q);
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
is called with a type `Sseq` that does not qualify as a seed sequence,
|
| 37 |
+
then this constructor shall not participate in overload resolution;
|
| 38 |
+
- if the member function
|
| 39 |
+
``` cpp
|
| 40 |
+
template<class Sseq> void seed(Sseq& q);
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
is called with a type `Sseq` that does not qualify as a seed sequence,
|
| 44 |
+
then this function shall not participate in overload resolution.
|
| 45 |
+
|
| 46 |
+
The extent to which an implementation determines that a type cannot be a
|
| 47 |
+
seed sequence is unspecified, except that as a minimum a type shall not
|
| 48 |
+
qualify as a seed sequence if it is implicitly convertible to
|
| 49 |
+
`X::result_type`.
|
| 50 |
+
|