From Jason Turner

[rand.req.dist]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpar9uo893/{from.md → to.md} +30 -14
tmp/tmpar9uo893/{from.md → to.md} RENAMED
@@ -13,22 +13,38 @@ distribution*. Such distribution parameters are identified in this
13
  context by writing, for example, p(z | a,b) or P(zᵢ | a,b), to name
14
  specific parameters, or by writing, for example, p(z |{`p`}) or
15
  P(zᵢ |{`p`}), to denote a distribution’s parameters `p` taken as a
16
  whole.
17
 
18
- A class `D` satisfies the requirements of a *random number distribution*
19
- if the expressions shown in Table  [[tab:RandomDistribution]] are valid
20
- and have the indicated semantics, and if `D` and its associated types
21
- also satisfy all other requirements of this section [[rand.req.dist]].
22
- In that Table and throughout this section,
23
 
24
- where `charT` and `traits` are constrained according to Clauses 
25
- [[strings]] and [[input.output]].
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
- `D` shall satisfy the requirements of `CopyConstructible` (Table 
28
- [[tab:copyconstructible]]) and `CopyAssignable` (Table 
29
- [[tab:copyassignable]]) types.
 
 
 
30
 
31
  The sequence of numbers produced by repeated invocations of `d(g)` shall
32
  be independent of any invocation of `os << d` or of any `const` member
33
  function of `D` between any of the invocations `d(g)`.
34
 
@@ -41,14 +57,14 @@ produce the same sequence of numbers as would repeated invocations of
41
  It is unspecified whether `D::param_type` is declared as a (nested)
42
  `class` or via a `typedef`. In this subclause [[rand]], declarations of
43
  `D::param_type` are in the form of `typedef`s for convenience of
44
  exposition only.
45
 
46
- `P` shall satisfy the requirements of `CopyConstructible` (Table 
47
- [[tab:copyconstructible]]), `CopyAssignable` (Table 
48
- [[tab:copyassignable]]), and `EqualityComparable` (Table 
49
- [[tab:equalitycomparable]]) types.
50
 
51
  For each of the constructors of `D` taking arguments corresponding to
52
  parameters of the distribution, `P` shall have a corresponding
53
  constructor subject to the same requirements and taking arguments
54
  identical in number, type, and default values. Moreover, for each of the
 
13
  context by writing, for example, p(z | a,b) or P(zᵢ | a,b), to name
14
  specific parameters, or by writing, for example, p(z |{`p`}) or
15
  P(zᵢ |{`p`}), to denote a distribution’s parameters `p` taken as a
16
  whole.
17
 
18
+ A class `D` meets the requirements of a *random number distribution* if
19
+ the expressions shown in [[rand.req.dist]] are valid and have the
20
+ indicated semantics, and if `D` and its associated types also meet all
21
+ other requirements of this subclause [[rand.req.dist]]. In that Table
22
+ and throughout this subclause,
23
 
24
+ - `T` is the type named by `D`’s associated `result_type`;
25
+ - `P` is the type named by `D`’s associated `param_type`;
26
+ - `d` is a value of `D`, and `x` and `y` are (possibly `const`) values
27
+ of `D`;
28
+ - `glb` and `lub` are values of `T` respectively corresponding to the
29
+ greatest lower bound and the least upper bound on the values
30
+ potentially returned by `d`’s `operator()`, as determined by the
31
+ current values of `d`’s parameters;
32
+ - `p` is a (possibly `const`) value of `P`;
33
+ - `g`, `g1`, and `g2` are lvalues of a type meeting the requirements of
34
+ a uniform random bit generator [[rand.req.urng]];
35
+ - `os` is an lvalue of the type of some class template specialization
36
+ `basic_ostream<charT,` `traits>`; and
37
+ - `is` is an lvalue of the type of some class template specialization
38
+ `basic_istream<charT,` `traits>`;
39
 
40
+ where `charT` and `traits` are constrained according to [[strings]] and
41
+ [[input.output]].
42
+
43
+ `D` shall meet the *Cpp17CopyConstructible* (
44
+ [[cpp17.copyconstructible]]) and *Cpp17CopyAssignable* (
45
+ [[cpp17.copyassignable]]) requirements.
46
 
47
  The sequence of numbers produced by repeated invocations of `d(g)` shall
48
  be independent of any invocation of `os << d` or of any `const` member
49
  function of `D` between any of the invocations `d(g)`.
50
 
 
57
  It is unspecified whether `D::param_type` is declared as a (nested)
58
  `class` or via a `typedef`. In this subclause [[rand]], declarations of
59
  `D::param_type` are in the form of `typedef`s for convenience of
60
  exposition only.
61
 
62
+ `P` shall meet the *Cpp17CopyConstructible* (
63
+ [[cpp17.copyconstructible]]), *Cpp17CopyAssignable* (
64
+ [[cpp17.copyassignable]]), and *Cpp17EqualityComparable* (
65
+ [[cpp17.equalitycomparable]]) requirements.
66
 
67
  For each of the constructors of `D` taking arguments corresponding to
68
  parameters of the distribution, `P` shall have a corresponding
69
  constructor subject to the same requirements and taking arguments
70
  identical in number, type, and default values. Moreover, for each of the