1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <forward_list>
11
12 // template <class T, class Allocator>
13 // bool operator==(const forward_list<T, Allocator>& x,
14 // const forward_list<T, Allocator>& y);
15 //
16 // template <class T, class Allocator>
17 // bool operator!=(const forward_list<T, Allocator>& x,
18 // const forward_list<T, Allocator>& y);
19
20 #include <forward_list>
21 #include <iterator>
22 #include <algorithm>
23 #include <cassert>
24
25 #include "min_allocator.h"
26
27 template <class C>
test(int N,int M)28 void test(int N, int M)
29 {
30 typedef typename C::value_type T;
31 C c1;
32 for (int i = 0; i < N; ++i)
33 c1.push_front(i);
34 C c2;
35 for (int i = 0; i < M; ++i)
36 c2.push_front(i);
37 if (N == M)
38 assert(c1 == c2);
39 else
40 assert(c1 != c2);
41 c2 = c1;
42 assert(c1 == c2);
43 if (N > 0)
44 {
45 c2.front() = N+1;
46 assert(c1 != c2);
47 }
48 }
49
main()50 int main()
51 {
52 for (int i = 0; i < 10; ++i)
53 for (int j = 0; j < 10; ++j)
54 test<std::forward_list<int> >(i, j);
55 #if __cplusplus >= 201103L
56 for (int i = 0; i < 10; ++i)
57 for (int j = 0; j < 10; ++j)
58 test<std::forward_list<int, min_allocator<int>> >(i, j);
59 #endif
60 }
61