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

499. Std. doesn't seem to require stable_sort() to be stable!

Section: 27.8.2.2 [stable.sort] Status: NAD Editorial Submitter: Prateek Karandikar Opened: 2005-04-12 Last modified: 2016-01-28

Priority: Not Prioritized

View all issues with NAD Editorial status.

Discussion:

17.3.1.1 Summary

1 The Summary provides a synopsis of the category, and introduces the first-level subclauses. Each subclause also provides a summary, listing the headers specified in the subclause and the library entities provided in each header.

2 Paragraphs labelled "Note(s):" or "Example(s):" are informative, other paragraphs are normative.

So this means that a "Notes" paragraph wouldn't be normative.

25.3.1.2 stable_sort

template<class RandomAccessIterator> 
void stable_sort(RandomAccessIterat or first, RandomAccessIterator last); 

template<class RandomAccessIterator, class Compare> 
void stable_sort(RandomAccessIterat or first, RandomAccessIterator last, Compare comp);

1 Effects: Sorts the elements in the range [first, last).

2 Complexity: It does at most N(log N)^2 (where N == last - first) comparisons; if enough extra memory is available, it is N log N.

3 Notes: Stable: the relative order of the equivalent elements is preserved.

The Notes para is informative, and nowhere else is stability mentioned above.

Also, I just searched for the word "stable" in my copy of the Standard. and the phrase "Notes: Stable: the relative order of the elements..." is repeated several times in the Standard library clauses for describing various functions. How is it that stability is talked about in the informative paragraph? Or am I missing something obvious?

Proposed resolution:

Rationale:

This change has already been made.