clear()
Section: 23.2.4 [sequence.reqmts] Status: C++14 Submitter: Jonathan Wakely Opened: 2012-12-30 Last modified: 2016-01-28
Priority: Not Prioritized
View other active issues in [sequence.reqmts].
View all other issues in [sequence.reqmts].
View all issues with C++14 status.
Discussion:
From the question at stackoverflow.
Were we aware that the resolution to LWG 704 means there is no complexity guarantee for
clear()
on most sequence containers? Previously it was implied by defining it in terms of
erase(begin(), end())
but we no longer do that.
There are explicit complexity requirements for std::list::clear()
, but not the other sequence containers.
Daniel:
The idea was that the notion of "destroys all elements in a
" would imply a linear complexity, but the wording
needs to be clearer, because this doesn't say that this step is the actual complexity bound.
[2013-03-15 Issues Teleconference]
Moved to Tentatively Ready.
[2013-04-20 Bristol]
Proposed resolution:
This wording is relative to N3485.
Change Table 100 as indicated:
Table 100 — Sequence container requirements (in addition to container) (continued) Expression Return type Assertion/note pre-/post-condition …
a.clear()
void
Destroys all elements in a
. Invalidates all
references, pointers, and iterators referring to
the elements ofa
and may invalidate the
past-the-end iterator.
post:a.empty()
returnstrue
complexity: linear…