This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.
Section: 24.3.8.4 [deque.modifiers] Status: C++20 Submitter: Tim Song Opened: 2017-03-30 Last modified: 2021-02-25
Priority: 0
View all other issues in [deque.modifiers].
View all issues with C++20 status.
Discussion:
Most of the discussion of LWG 2853 applies, mutatis mutandis, to deque::erase. The relevant requirements table requires neither Copy/MoveInsertable nor Copy/MoveConstructible for the erase operations, so there's no way a copy/move constructor can safely be called.
And "assignment operator or move assignment operator" is just "assignment operator", since "move assignment operator" is just a species of "assignment operator".[2017-07 Toronto Wed Issue Prioritization]
Priority 0; Move to Ready
Proposed resolution:
This wording is relative to N4659.
Change 24.3.8.4 [deque.modifiers] as indicated:
iterator erase(const_iterator position); iterator erase(const_iterator first, const_iterator last); void pop_front(); void pop_back();-4- Effects: […]
-5- Complexity: The number of calls to the destructor of T is the same as the number of elements erased, but the number of calls to the assignment operator of T is no more than the lesser of the number of elements before the erased elements and the number of elements after the erased elements. -6- Throws: Nothing unless an exception is thrown by thecopy constructor, move constructor,assignment operator, or move assignment operatorof T.