A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.github.io/LWG/issue2110 below:

remove can't swap but note says it might

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

2110. remove can't swap but note says it might

Section: 26.7.8 [alg.remove] Status: C++14 Submitter: Howard Hinnant Opened: 2011-12-07 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [alg.remove].

View all issues with C++14 status.

Discussion:

26.7.8 [alg.remove]/p1 says:

1 Requires: The type of *first shall satisfy the MoveAssignable requirements (Table 22).

This means that remove/remove_if can only use move assignment to permute the sequence. But then 26.7.8 [alg.remove]/p6 (non-normatively) contradicts p1:

6 Note: each element in the range [ret,last), where ret is the returned value, has a valid but unspecified state, because the algorithms can eliminate elements by swapping with or moving from elements that were originally in that range.

[2012, Kona]

Move to Ready.

Alisdair notes we could extend permission to use swap if it is available, but there is no interest. Accept the proposed resolution as written.

[2012, Portland: applied to WP]

Proposed resolution:

This wording is relative to the FDIS.

Change 26.7.8 [alg.remove] as indicated:

template<class ForwardIterator, class T>
  ForwardIterator remove(ForwardIterator first, ForwardIterator last,
                         const T& value);

template<class ForwardIterator, class Predicate>
  ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
                            Predicate pred);

[…]

-6-Note: each element in the range [ret,last), where ret is the returned value, has a valid but unspecified state, because the algorithms can eliminate elements by swapping with or moving from elements that were originally in that range.

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4