1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <forward_list>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// void swap(forward_list& x);
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <forward_list>
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
171b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow#include "test_allocator.h"
18061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef test_allocator<T> A;
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(std::begin(t1), std::end(t1), A(1));
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t2[] = {10, 11, 12};
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(std::begin(t2), std::end(t2), A(2));
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 0) == 10);
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 1) == 11);
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 2) == 12);
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(1));
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 0) == 0);
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 1) == 1);
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 2) == 2);
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 3) == 3);
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 4) == 4);
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 5) == 5);
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(2));
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef test_allocator<T> A;
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(std::begin(t1), std::end(t1), A(1));
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(A(2));
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(1));
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 0) == 0);
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 1) == 1);
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 2) == 2);
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 3) == 3);
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 4) == 4);
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 5) == 5);
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(2));
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef test_allocator<T> A;
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(A(1));
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t2[] = {10, 11, 12};
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(std::begin(t2), std::end(t2), A(2));
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 0) == 10);
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 1) == 11);
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 2) == 12);
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(1));
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(2));
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef test_allocator<T> A;
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(A(1));
91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(A(2));
92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(1));
96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(2));
99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef other_allocator<T> A;
104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(std::begin(t1), std::end(t1), A(1));
107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t2[] = {10, 11, 12};
108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(std::begin(t2), std::end(t2), A(2));
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 0) == 10);
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 1) == 11);
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 2) == 12);
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(2));
116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 0) == 0);
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 1) == 1);
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 2) == 2);
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 3) == 3);
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 4) == 4);
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 5) == 5);
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(1));
125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef other_allocator<T> A;
129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(std::begin(t1), std::end(t1), A(1));
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(A(2));
133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(2));
137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 0) == 0);
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 1) == 1);
141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 2) == 2);
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 3) == 3);
143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 4) == 4);
144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c2.begin(), 5) == 5);
145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(1));
146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef other_allocator<T> A;
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(A(1));
152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t2[] = {10, 11, 12};
153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(std::begin(t2), std::end(t2), A(2));
154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 0) == 10);
158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 1) == 11);
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c1.begin(), 2) == 12);
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(2));
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(1));
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef other_allocator<T> A;
168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T, A> C;
169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c1(A(1));
170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c2(A(2));
171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c1.swap(c2);
172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c1.get_allocator() == A(2));
175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(c2.get_allocator() == A(1));
178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
17981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#if __cplusplus >= 201103L
18081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
18181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef int T;
18281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef min_allocator<T> A;
18381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, A> C;
18481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
18581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c1(std::begin(t1), std::end(t1), A());
18681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        const T t2[] = {10, 11, 12};
18781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c2(std::begin(t2), std::end(t2), A());
18881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c1.swap(c2);
18981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
19081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
19181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 0) == 10);
19281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 1) == 11);
19381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 2) == 12);
19481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c1.get_allocator() == A());
19581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
19681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
19781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 0) == 0);
19881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 1) == 1);
19981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 2) == 2);
20081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 3) == 3);
20181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 4) == 4);
20281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 5) == 5);
20381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c2.get_allocator() == A());
20481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
20581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
20681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef int T;
20781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef min_allocator<T> A;
20881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, A> C;
20981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        const T t1[] = {0, 1, 2, 3, 4, 5};
21081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c1(std::begin(t1), std::end(t1), A());
21181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c2(A{});
21281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c1.swap(c2);
21381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
21481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
21581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c1.get_allocator() == A());
21681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
21781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c2.begin(), c2.end()) == 6);
21881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 0) == 0);
21981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 1) == 1);
22081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 2) == 2);
22181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 3) == 3);
22281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 4) == 4);
22381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c2.begin(), 5) == 5);
22481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c2.get_allocator() == A());
22581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
22681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
22781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef int T;
22881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef min_allocator<T> A;
22981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, A> C;
23081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c1(A{});
23181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        const T t2[] = {10, 11, 12};
23281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c2(std::begin(t2), std::end(t2), A());
23381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c1.swap(c2);
23481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
23581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c1.begin(), c1.end()) == 3);
23681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 0) == 10);
23781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 1) == 11);
23881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c1.begin(), 2) == 12);
23981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c1.get_allocator() == A());
24081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
24181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
24281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c2.get_allocator() == A());
24381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
24481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
24581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef int T;
24681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef min_allocator<T> A;
24781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, A> C;
24881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c1(A{});
24981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c2(A{});
25081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c1.swap(c2);
25181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
25281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c1.begin(), c1.end()) == 0);
25381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c1.get_allocator() == A());
25481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
25581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c2.begin(), c2.end()) == 0);
25681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(c2.get_allocator() == A());
25781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
25881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#endif
259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
260