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.

2044. No definition of "Stable" for copy algorithms

Section: 16.4.6.8 [algorithm.stable] Status: C++14 Submitter: Pablo Halpern Opened: 2011-03-24 Last modified: 2016-01-28

Priority: Not Prioritized

View all issues with C++14 status.

Discussion:

16.4.6.8 [algorithm.stable] specified the meaning of "stable" when applied to the different types of algorithms. The second bullet says:

— For the remove algorithms the relative order of the elements that are not removed is preserved.

There is no description of what "stable" means for copy algorithms, even though the term is applied to copy_if (and perhaps others now or in the future). Thus, copy_if is using the term without a precise definition.

[Bloomington, 2011]

Move to Ready

Proposed resolution:

This wording is relative to the FDIS.

  1. In 16.4.6.8 [algorithm.stable] p. 1 change as indicated:

    When the requirements for an algorithm state that it is “stable” without further elaboration, it means:

    • For the sort algorithms the relative order of equivalent elements is preserved.
    • For the remove and copy algorithms the relative order of the elements that are not removed is preserved.
    • For the merge algorithms, for equivalent elements in the original two ranges, the elements from the first range precede the elements from the second range.