This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.
Section: 24.3.7 [array] Status: CD1 Submitter: Daniel Krügler Opened: 2008-01-20 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [array].
View all issues with CD1 status.
Discussion:
The class template array synopsis in 24.3.7 [array] p. 3 declares a member function
void assign(const T& u);
which's semantic is no-where described. Since this signature is not part of the container requirements, such a semantic cannot be derived by those.
I found only one reference to this function in the issue list, 588 where the question is raised:
what's the effect of calling assign(T&) on a zero-sized array?
which does not answer the basic question of this issue.
If this function shall be part of the std::array, it's probable semantic should correspond to that of boost::array, but of course such wording must be added.
Proposed resolution:
Just after the section [array.data] add the following new section:
23.2.1.5 array::fill [array.fill]
void fill(const T& u);1: Effects: fill_n(begin(), N, u)
[N.B: I wonder, why class array does not have a "modifiers" section. If it had, then assign would naturally belong to it]
Change the synopsis in 24.3.7 [array]/3:
template <class T, size_t N> struct array { ... voidassignfill(const T& u); ...
[ Bellevue: ]
Suggest substituting "fill" instead of "assign".
Set state to Review given substitution of "fill" for "assign".