1 // { dg-options "-std=gnu++11" }
2 
3 // Copyright (C) 2009-2016 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library.  This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
10 
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3.  If not see
18 // <http://www.gnu.org/licenses/>.
19 
20 #include <list>
21 #include <testsuite_hooks.h>
22 
23 // PR libstdc++/42352
test01()24 void test01()
25 {
26   bool test __attribute__((unused)) = true;
27 
28   std::list<int> l{3, 2, 4, 1, 5, 9, 0, 8, 6, 7};
29 
30   l.sort();
31 
32   for (auto it = l.begin(); it != l.end(); ++it)
33     {
34       static int nn = 0;
35       VERIFY( *it == nn++ );
36     }
37 }
38 
test02()39 void test02()
40 {
41   bool test __attribute__((unused)) = true;
42 
43   std::list<int> l{3, 2, 4, 1, 5, 9, 0, 8, 6, 7};
44 
45   struct compare
46   {
47     bool
48     operator()(int const& one, int const& two) const
49     { return one > two; }
50   };
51 
52   l.sort(compare());
53 
54   for (auto it = l.begin(); it != l.end(); ++it)
55     {
56       static int nn = 9;
57       VERIFY( *it == nn-- );
58     }
59 }
60 
main()61 int main()
62 {
63   test01();
64   test02();
65   return 0;
66 }
67