This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD status.

### 737. Comment on [rand.dist.samp.pconst]

Section: 28.5.9.6.2 [rand.dist.samp.pconst] Status: NAD Submitter: Stephan Tolksdorf Opened: 2007-09-21 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [rand.dist.samp.pconst].

View all issues with NAD status.

Discussion:

1. The discussion in point T11 above regarding `probabilities()` similarly applies to the method `densities()` of `piecewise_constant_distribution`.

2. The design of the constructor

   >     template <class InputIteratorB, class InputIteratorW>
   >     piecewise_constant_distribution( InputIteratorB firstB, InputIteratorB lastB,
   >                                      InputIteratorW firstW);

   is unnecessarily unsafe, as there is no separate end-iterator given for the weights. I can't see any performance or convenience reasons that would justify the risks inherent in such a function interface, in particular the risk that input error might go unnoticed.

Possible resolution: I propose to add an `InputIteratorW lastW` argument to the interface.

[ Stephan Tolksdorf adds pre-Bellevue: ]

> In reply to the discussion in N2424 I'd like to make the same comments as for 736.

[ Bellevue: ]

> In N2424. There is already precedent elsewhere in the library. Follows existing convention. NAD.

Proposed resolution:

See N2424 for the proposed resolution.

[ Stephan Tolksdorf adds pre-Bellevue: ]

> In 28.5.9.6.2 [rand.dist.samp.pconst]:

> Proposed wording a)

> > Change in para. 2

> > > Constructs a `piecewise_constant_distribution` object with `n = 1`, `p0 = w0 = 1`, `b0 = 0`, and `b1 = 1`

> > and change in para. 5

> > > A `vector<result_type>` whose `size` member returns `n` and whose `operator[]` member returns `pk` the weight `wk` as a double value when invoked with argument `k` for `k = 0, ..., n-1`

> Proposed wording b)

> > Change both occurrences of

> > >     "piecewise_constant_distribution(InputIteratorB firstB, InputIteratorB lastB,
> > >                                      InputIteratorW firstW, InputIteratorW lastW)

> > and change in para. 3

> > > the length of the sequence `w` starting from `firstW` shall be at least `n`, `*firstW` shall return a value `w0` that is convertible to `double`, and any `wk` for `k >= n` shall be ignored by the distribution `[firstW, lastW)` shall form a sequence `w` of length `n` whose leading element `w0` shall be convertible to `double`