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.
forward_list::resize take the object to be copied by value?Section: 23.3.7.5 [forward.list.modifiers] Status: C++11 Submitter: James McNellis Opened: 2010-07-16 Last modified: 2023-02-07
Priority: Not Prioritized
View all other issues in [forward.list.modifiers].
View all issues with C++11 status.
Discussion:
In
N3092
[forwardlist.modifiers], the resize() member function is
declared as:
void resize(size_type sz, value_type c);
The other sequence containers (list, deque, and
vector) take 'c' by const reference.
Is there a reason for this difference? If not, then resize() should
be declared as:
void resize(size_type sz, const value_type& c);
The declaration would need to be changed both at its declaration in the class definition at [forwardlist]/3 and where its behavior is specified at [forwardlist.modifiers]/22.
This would make forward_list consistent with the CD1 issue 679(i).
[ Post-Rapperswil ]
Daniel changed the P/R slightly, because one paragraph number has been changed since the issue
had been submitted. He also added a similar Requires element that exists in all other containers with
a resize member function. He deliberately did not touch the wrong usage of "default-constructed" because that
will be taken care of by LWG issue 868(i).
Moved to Tentatively Ready with revised wording after 5 positive votes on c++std-lib.
[ Adopted at 2010-11 Batavia ]
Proposed resolution:
forward_list synopsis, as indicated:
... void resize(size_type sz); void resize(size_type sz, value_type c); void clear(); ...
void resize(size_type sz); void resize(size_type sz, value_type c);27 Effects: If
sz < distance(begin(), end()), erases the lastdistance(begin(), end()) - szelements from the list. Otherwise, insertssz - distance(begin(), end())elements at the end of the list. For the first signature the inserted elements are default constructed, and for the second signature they are copies ofc.