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

### 1439. Return from `densities()` functions?

Section: 28.5.9.6.2 [rand.dist.samp.pconst] Status: C++11 Submitter: INCITS Opened: 2010-08-25 Last modified: 2016-01-28

Priority: Not Prioritized

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

View all issues with C++11 status.

Discussion:

Addresses US-134

These two distributions have a member function called `densities()` which returns a `vector<double>`. The distribution is templated on `RealType`. The distribution also has another member called `intervals()` which returns a `vector<RealType>`. Why doesn't densities return `vector<RealType>` as well? If `RealType` is `long double`, the computed densities property isn't being computed to the precision the client desires. If `RealType` is `float`, the densities vector is taking up twice as much space as the client desires.

[ Resolution proposed by ballot comment: ]

> Change the piecewise constant and linear distributions to hold / return the densities in a `vector<result_type>`.

> If this is not done, at least correct 28.5.9.6.2 [rand.dist.samp.pconst] p. 13 which describes the return of densities as a `vector<result_type>`.

[ Batavia 2010: After reviewing this issue, the working group concurred with the first of the suggestions proposed by the NB comment: "Change the piecewise constant and linear distributions to hold/return the densities in a vector. " ]

[ Adopted at 2010-11 Batavia ]

Proposed resolution:

1. Change 28.5.9.6.2 [rand.dist.samp.pconst] p. 2, class template `piecewise_constant_distribution` synopsis and the prototype description 28.5.9.6.2 [rand.dist.samp.pconst] before p. 13 as indicated:

   >     vector<doubleresult_type> densities() const;

2. Change 28.5.9.6.3 [rand.dist.samp.plinear] p. 2, class template `piecewise_linear_distribution` synopsis and the prototype description 28.5.9.6.3 [rand.dist.samp.plinear] before p. 13 as indicated:

   >     vector<doubleresult_type> densities() const;