]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 23_containers / forward_list / operations / 90105.cc
CommitLineData
8d9254fc 1// Copyright (C) 2019-2020 Free Software Foundation, Inc.
8c710065
JW
2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
18// { dg-do run { target c++11 } }
19
20#include <forward_list>
21#include <testsuite_hooks.h>
22
23// PR libstdc++/90105 - std::forward_list::sort() is not "stable"
24
25struct X
26{
27 int key;
28 int val;
29};
30
31bool operator<(const X& l, const X& r)
32{ return l.key < r.key; }
33
34bool operator==(const X& l, const X& r)
35{ return l.key == r.key && l.val == r.val; }
36
37void
38test01()
39{
40 std::forward_list<X> l{ {1, 1}, {2, 2}, {1, 3}, {0, 4}, {2, 5}, {0, 6} };
41 l.sort();
42 std::forward_list<X> exp{ {0, 4}, {0, 6}, {1, 1}, {1, 3}, {2, 2}, {2, 5} };
43 VERIFY( l == exp );
44}
45
46void
47test02()
48{
49 std::forward_list<X> l{ {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6} };
50 const std::forward_list<X> exp = l;
51 l.sort();
52 VERIFY( l == exp );
53}
54
55int
56main()
57{
58 test01();
59 test02();
60}