https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90105
Bug ID: 90105
Summary: std::forward_list::sort() is not "stable"
Product: gcc
Version: 7.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: stoyanovmk at ornl dot gov
Target Milestone: ---
Created attachment 46175
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46175&action=edit
Small example to reproduce the issue
From: https://en.cppreference.com/w/cpp/container/forward_list/sort
"Note: <snip> This function also differs from std::sort in that it does not
require the element type of the forward_list to be swappable, preserves the
values of all iterators, and performs a stable sort."
Output of the attached sample program:
```
List before sort:
a 1
b 2
c 1
d 0
List after sort:
d 0
c 1
a 1
b 2
```
Note that (a, 1) comes before (c, 1), but after the sort the order is reversed.
PS: Example used gcc 7.3.0 under Ubutnu 18.04, but the behavior is pretty
consistent across versions, including 6.3 and 8.0.