1*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
2*0a6a1f1dSLionel Sambuc //
3*0a6a1f1dSLionel Sambuc //                     The LLVM Compiler Infrastructure
4*0a6a1f1dSLionel Sambuc //
5*0a6a1f1dSLionel Sambuc // This file is dual licensed under the MIT and the University of Illinois Open
6*0a6a1f1dSLionel Sambuc // Source Licenses. See LICENSE.TXT for details.
7*0a6a1f1dSLionel Sambuc //
8*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
9*0a6a1f1dSLionel Sambuc 
10*0a6a1f1dSLionel Sambuc // <list>
11*0a6a1f1dSLionel Sambuc 
12*0a6a1f1dSLionel Sambuc // void splice(const_iterator position, list& x);
13*0a6a1f1dSLionel Sambuc 
14*0a6a1f1dSLionel Sambuc #if _LIBCPP_DEBUG >= 1
15*0a6a1f1dSLionel Sambuc #define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
16*0a6a1f1dSLionel Sambuc #endif
17*0a6a1f1dSLionel Sambuc 
18*0a6a1f1dSLionel Sambuc #include <list>
19*0a6a1f1dSLionel Sambuc #include <cassert>
20*0a6a1f1dSLionel Sambuc 
21*0a6a1f1dSLionel Sambuc #include "min_allocator.h"
22*0a6a1f1dSLionel Sambuc 
main()23*0a6a1f1dSLionel Sambuc int main()
24*0a6a1f1dSLionel Sambuc {
25*0a6a1f1dSLionel Sambuc     int a1[] = {1, 2, 3};
26*0a6a1f1dSLionel Sambuc     int a2[] = {4, 5, 6};
27*0a6a1f1dSLionel Sambuc     {
28*0a6a1f1dSLionel Sambuc         std::list<int> l1;
29*0a6a1f1dSLionel Sambuc         std::list<int> l2;
30*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
31*0a6a1f1dSLionel Sambuc         assert(l1.size() == 0);
32*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 0);
33*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
34*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
35*0a6a1f1dSLionel Sambuc     }
36*0a6a1f1dSLionel Sambuc     {
37*0a6a1f1dSLionel Sambuc         std::list<int> l1;
38*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
39*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
40*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
41*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
42*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
43*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
44*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
45*0a6a1f1dSLionel Sambuc         assert(*i == 4);
46*0a6a1f1dSLionel Sambuc     }
47*0a6a1f1dSLionel Sambuc     {
48*0a6a1f1dSLionel Sambuc         std::list<int> l1;
49*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
50*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
51*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
52*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
53*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
54*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
55*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
56*0a6a1f1dSLionel Sambuc         assert(*i == 4);
57*0a6a1f1dSLionel Sambuc         ++i;
58*0a6a1f1dSLionel Sambuc         assert(*i == 5);
59*0a6a1f1dSLionel Sambuc     }
60*0a6a1f1dSLionel Sambuc     {
61*0a6a1f1dSLionel Sambuc         std::list<int> l1;
62*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
63*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
64*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
65*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
66*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
67*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
68*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
69*0a6a1f1dSLionel Sambuc         assert(*i == 4);
70*0a6a1f1dSLionel Sambuc         ++i;
71*0a6a1f1dSLionel Sambuc         assert(*i == 5);
72*0a6a1f1dSLionel Sambuc         ++i;
73*0a6a1f1dSLionel Sambuc         assert(*i == 6);
74*0a6a1f1dSLionel Sambuc     }
75*0a6a1f1dSLionel Sambuc     {
76*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
77*0a6a1f1dSLionel Sambuc         std::list<int> l2;
78*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
79*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
80*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
81*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
82*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
83*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
84*0a6a1f1dSLionel Sambuc         assert(*i == 1);
85*0a6a1f1dSLionel Sambuc     }
86*0a6a1f1dSLionel Sambuc     {
87*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
88*0a6a1f1dSLionel Sambuc         std::list<int> l2;
89*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
90*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
91*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
92*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
93*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
94*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
95*0a6a1f1dSLionel Sambuc         assert(*i == 1);
96*0a6a1f1dSLionel Sambuc     }
97*0a6a1f1dSLionel Sambuc     {
98*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
99*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
100*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
101*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
102*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
103*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
104*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
105*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
106*0a6a1f1dSLionel Sambuc         assert(*i == 4);
107*0a6a1f1dSLionel Sambuc         ++i;
108*0a6a1f1dSLionel Sambuc         assert(*i == 1);
109*0a6a1f1dSLionel Sambuc     }
110*0a6a1f1dSLionel Sambuc     {
111*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
112*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
113*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
114*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
115*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
116*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
117*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
118*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
119*0a6a1f1dSLionel Sambuc         assert(*i == 1);
120*0a6a1f1dSLionel Sambuc         ++i;
121*0a6a1f1dSLionel Sambuc         assert(*i == 4);
122*0a6a1f1dSLionel Sambuc     }
123*0a6a1f1dSLionel Sambuc     {
124*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
125*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
126*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
127*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
128*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
129*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
130*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
131*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
132*0a6a1f1dSLionel Sambuc         assert(*i == 4);
133*0a6a1f1dSLionel Sambuc         ++i;
134*0a6a1f1dSLionel Sambuc         assert(*i == 5);
135*0a6a1f1dSLionel Sambuc         ++i;
136*0a6a1f1dSLionel Sambuc         assert(*i == 1);
137*0a6a1f1dSLionel Sambuc     }
138*0a6a1f1dSLionel Sambuc     {
139*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
140*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
141*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
142*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
143*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
144*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
145*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
146*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
147*0a6a1f1dSLionel Sambuc         assert(*i == 1);
148*0a6a1f1dSLionel Sambuc         ++i;
149*0a6a1f1dSLionel Sambuc         assert(*i == 4);
150*0a6a1f1dSLionel Sambuc         ++i;
151*0a6a1f1dSLionel Sambuc         assert(*i == 5);
152*0a6a1f1dSLionel Sambuc     }
153*0a6a1f1dSLionel Sambuc     {
154*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
155*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
156*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
157*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
158*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
159*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
160*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
161*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
162*0a6a1f1dSLionel Sambuc         assert(*i == 4);
163*0a6a1f1dSLionel Sambuc         ++i;
164*0a6a1f1dSLionel Sambuc         assert(*i == 5);
165*0a6a1f1dSLionel Sambuc         ++i;
166*0a6a1f1dSLionel Sambuc         assert(*i == 6);
167*0a6a1f1dSLionel Sambuc         ++i;
168*0a6a1f1dSLionel Sambuc         assert(*i == 1);
169*0a6a1f1dSLionel Sambuc     }
170*0a6a1f1dSLionel Sambuc     {
171*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
172*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
173*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
174*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
175*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
176*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
177*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
178*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
179*0a6a1f1dSLionel Sambuc         assert(*i == 1);
180*0a6a1f1dSLionel Sambuc         ++i;
181*0a6a1f1dSLionel Sambuc         assert(*i == 4);
182*0a6a1f1dSLionel Sambuc         ++i;
183*0a6a1f1dSLionel Sambuc         assert(*i == 5);
184*0a6a1f1dSLionel Sambuc         ++i;
185*0a6a1f1dSLionel Sambuc         assert(*i == 6);
186*0a6a1f1dSLionel Sambuc     }
187*0a6a1f1dSLionel Sambuc     {
188*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
189*0a6a1f1dSLionel Sambuc         std::list<int> l2;
190*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
191*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
192*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
193*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
194*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
195*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
196*0a6a1f1dSLionel Sambuc         assert(*i == 1);
197*0a6a1f1dSLionel Sambuc         ++i;
198*0a6a1f1dSLionel Sambuc         assert(*i == 2);
199*0a6a1f1dSLionel Sambuc     }
200*0a6a1f1dSLionel Sambuc     {
201*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
202*0a6a1f1dSLionel Sambuc         std::list<int> l2;
203*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
204*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
205*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
206*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
207*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
208*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
209*0a6a1f1dSLionel Sambuc         assert(*i == 1);
210*0a6a1f1dSLionel Sambuc         ++i;
211*0a6a1f1dSLionel Sambuc         assert(*i == 2);
212*0a6a1f1dSLionel Sambuc     }
213*0a6a1f1dSLionel Sambuc     {
214*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
215*0a6a1f1dSLionel Sambuc         std::list<int> l2;
216*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
217*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
218*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
219*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
220*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
221*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
222*0a6a1f1dSLionel Sambuc         assert(*i == 1);
223*0a6a1f1dSLionel Sambuc         ++i;
224*0a6a1f1dSLionel Sambuc         assert(*i == 2);
225*0a6a1f1dSLionel Sambuc     }
226*0a6a1f1dSLionel Sambuc     {
227*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
228*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
229*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
230*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
231*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
232*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
233*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
234*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
235*0a6a1f1dSLionel Sambuc         assert(*i == 4);
236*0a6a1f1dSLionel Sambuc         ++i;
237*0a6a1f1dSLionel Sambuc         assert(*i == 1);
238*0a6a1f1dSLionel Sambuc         ++i;
239*0a6a1f1dSLionel Sambuc         assert(*i == 2);
240*0a6a1f1dSLionel Sambuc     }
241*0a6a1f1dSLionel Sambuc     {
242*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
243*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
244*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
245*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
246*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
247*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
248*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
249*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
250*0a6a1f1dSLionel Sambuc         assert(*i == 1);
251*0a6a1f1dSLionel Sambuc         ++i;
252*0a6a1f1dSLionel Sambuc         assert(*i == 4);
253*0a6a1f1dSLionel Sambuc         ++i;
254*0a6a1f1dSLionel Sambuc         assert(*i == 2);
255*0a6a1f1dSLionel Sambuc     }
256*0a6a1f1dSLionel Sambuc     {
257*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
258*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
259*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
260*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
261*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
262*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
263*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
264*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
265*0a6a1f1dSLionel Sambuc         assert(*i == 1);
266*0a6a1f1dSLionel Sambuc         ++i;
267*0a6a1f1dSLionel Sambuc         assert(*i == 2);
268*0a6a1f1dSLionel Sambuc         ++i;
269*0a6a1f1dSLionel Sambuc         assert(*i == 4);
270*0a6a1f1dSLionel Sambuc     }
271*0a6a1f1dSLionel Sambuc     {
272*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
273*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
274*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
275*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
276*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
277*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
278*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
279*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
280*0a6a1f1dSLionel Sambuc         assert(*i == 4);
281*0a6a1f1dSLionel Sambuc         ++i;
282*0a6a1f1dSLionel Sambuc         assert(*i == 5);
283*0a6a1f1dSLionel Sambuc         ++i;
284*0a6a1f1dSLionel Sambuc         assert(*i == 1);
285*0a6a1f1dSLionel Sambuc         ++i;
286*0a6a1f1dSLionel Sambuc         assert(*i == 2);
287*0a6a1f1dSLionel Sambuc     }
288*0a6a1f1dSLionel Sambuc     {
289*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
290*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
291*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
292*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
293*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
294*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
295*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
296*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
297*0a6a1f1dSLionel Sambuc         assert(*i == 1);
298*0a6a1f1dSLionel Sambuc         ++i;
299*0a6a1f1dSLionel Sambuc         assert(*i == 4);
300*0a6a1f1dSLionel Sambuc         ++i;
301*0a6a1f1dSLionel Sambuc         assert(*i == 5);
302*0a6a1f1dSLionel Sambuc         ++i;
303*0a6a1f1dSLionel Sambuc         assert(*i == 2);
304*0a6a1f1dSLionel Sambuc     }
305*0a6a1f1dSLionel Sambuc     {
306*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
307*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
308*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
309*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
310*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
311*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
312*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
313*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
314*0a6a1f1dSLionel Sambuc         assert(*i == 1);
315*0a6a1f1dSLionel Sambuc         ++i;
316*0a6a1f1dSLionel Sambuc         assert(*i == 2);
317*0a6a1f1dSLionel Sambuc         ++i;
318*0a6a1f1dSLionel Sambuc         assert(*i == 4);
319*0a6a1f1dSLionel Sambuc         ++i;
320*0a6a1f1dSLionel Sambuc         assert(*i == 5);
321*0a6a1f1dSLionel Sambuc     }
322*0a6a1f1dSLionel Sambuc     {
323*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+3);
324*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
325*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
326*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
327*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
328*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
329*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
330*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
331*0a6a1f1dSLionel Sambuc         assert(*i == 4);
332*0a6a1f1dSLionel Sambuc         ++i;
333*0a6a1f1dSLionel Sambuc         assert(*i == 5);
334*0a6a1f1dSLionel Sambuc         ++i;
335*0a6a1f1dSLionel Sambuc         assert(*i == 6);
336*0a6a1f1dSLionel Sambuc         ++i;
337*0a6a1f1dSLionel Sambuc         assert(*i == 1);
338*0a6a1f1dSLionel Sambuc         ++i;
339*0a6a1f1dSLionel Sambuc         assert(*i == 2);
340*0a6a1f1dSLionel Sambuc         ++i;
341*0a6a1f1dSLionel Sambuc         assert(*i == 3);
342*0a6a1f1dSLionel Sambuc     }
343*0a6a1f1dSLionel Sambuc     {
344*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+3);
345*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
346*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
347*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
348*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
349*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
350*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
351*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
352*0a6a1f1dSLionel Sambuc         assert(*i == 1);
353*0a6a1f1dSLionel Sambuc         ++i;
354*0a6a1f1dSLionel Sambuc         assert(*i == 4);
355*0a6a1f1dSLionel Sambuc         ++i;
356*0a6a1f1dSLionel Sambuc         assert(*i == 5);
357*0a6a1f1dSLionel Sambuc         ++i;
358*0a6a1f1dSLionel Sambuc         assert(*i == 6);
359*0a6a1f1dSLionel Sambuc         ++i;
360*0a6a1f1dSLionel Sambuc         assert(*i == 2);
361*0a6a1f1dSLionel Sambuc         ++i;
362*0a6a1f1dSLionel Sambuc         assert(*i == 3);
363*0a6a1f1dSLionel Sambuc     }
364*0a6a1f1dSLionel Sambuc     {
365*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+3);
366*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
367*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
368*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
369*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
370*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
371*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
372*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
373*0a6a1f1dSLionel Sambuc         assert(*i == 1);
374*0a6a1f1dSLionel Sambuc         ++i;
375*0a6a1f1dSLionel Sambuc         assert(*i == 2);
376*0a6a1f1dSLionel Sambuc         ++i;
377*0a6a1f1dSLionel Sambuc         assert(*i == 4);
378*0a6a1f1dSLionel Sambuc         ++i;
379*0a6a1f1dSLionel Sambuc         assert(*i == 5);
380*0a6a1f1dSLionel Sambuc         ++i;
381*0a6a1f1dSLionel Sambuc         assert(*i == 6);
382*0a6a1f1dSLionel Sambuc         ++i;
383*0a6a1f1dSLionel Sambuc         assert(*i == 3);
384*0a6a1f1dSLionel Sambuc     }
385*0a6a1f1dSLionel Sambuc     {
386*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+3);
387*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
388*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 3), l2);
389*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
390*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
391*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
392*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
393*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
394*0a6a1f1dSLionel Sambuc         assert(*i == 1);
395*0a6a1f1dSLionel Sambuc         ++i;
396*0a6a1f1dSLionel Sambuc         assert(*i == 2);
397*0a6a1f1dSLionel Sambuc         ++i;
398*0a6a1f1dSLionel Sambuc         assert(*i == 3);
399*0a6a1f1dSLionel Sambuc         ++i;
400*0a6a1f1dSLionel Sambuc         assert(*i == 4);
401*0a6a1f1dSLionel Sambuc         ++i;
402*0a6a1f1dSLionel Sambuc         assert(*i == 5);
403*0a6a1f1dSLionel Sambuc         ++i;
404*0a6a1f1dSLionel Sambuc         assert(*i == 6);
405*0a6a1f1dSLionel Sambuc     }
406*0a6a1f1dSLionel Sambuc #if _LIBCPP_DEBUG >= 1
407*0a6a1f1dSLionel Sambuc     {
408*0a6a1f1dSLionel Sambuc         std::list<int> v1(3);
409*0a6a1f1dSLionel Sambuc         std::list<int> v2(3);
410*0a6a1f1dSLionel Sambuc         v1.splice(v2.begin(), v2);
411*0a6a1f1dSLionel Sambuc         assert(false);
412*0a6a1f1dSLionel Sambuc     }
413*0a6a1f1dSLionel Sambuc #endif
414*0a6a1f1dSLionel Sambuc #if __cplusplus >= 201103L
415*0a6a1f1dSLionel Sambuc     {
416*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
417*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
418*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
419*0a6a1f1dSLionel Sambuc         assert(l1.size() == 0);
420*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 0);
421*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
422*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
423*0a6a1f1dSLionel Sambuc     }
424*0a6a1f1dSLionel Sambuc     {
425*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
426*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
427*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
428*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
429*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
430*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
431*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
432*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
433*0a6a1f1dSLionel Sambuc         assert(*i == 4);
434*0a6a1f1dSLionel Sambuc     }
435*0a6a1f1dSLionel Sambuc     {
436*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
437*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
438*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
439*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
440*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
441*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
442*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
443*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
444*0a6a1f1dSLionel Sambuc         assert(*i == 4);
445*0a6a1f1dSLionel Sambuc         ++i;
446*0a6a1f1dSLionel Sambuc         assert(*i == 5);
447*0a6a1f1dSLionel Sambuc     }
448*0a6a1f1dSLionel Sambuc     {
449*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
450*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
451*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
452*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
453*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
454*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
455*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
456*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
457*0a6a1f1dSLionel Sambuc         assert(*i == 4);
458*0a6a1f1dSLionel Sambuc         ++i;
459*0a6a1f1dSLionel Sambuc         assert(*i == 5);
460*0a6a1f1dSLionel Sambuc         ++i;
461*0a6a1f1dSLionel Sambuc         assert(*i == 6);
462*0a6a1f1dSLionel Sambuc     }
463*0a6a1f1dSLionel Sambuc     {
464*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
465*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
466*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
467*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
468*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
469*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
470*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
471*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
472*0a6a1f1dSLionel Sambuc         assert(*i == 1);
473*0a6a1f1dSLionel Sambuc     }
474*0a6a1f1dSLionel Sambuc     {
475*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
476*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
477*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
478*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
479*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
480*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
481*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
482*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
483*0a6a1f1dSLionel Sambuc         assert(*i == 1);
484*0a6a1f1dSLionel Sambuc     }
485*0a6a1f1dSLionel Sambuc     {
486*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
487*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
488*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
489*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
490*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
491*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
492*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
493*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
494*0a6a1f1dSLionel Sambuc         assert(*i == 4);
495*0a6a1f1dSLionel Sambuc         ++i;
496*0a6a1f1dSLionel Sambuc         assert(*i == 1);
497*0a6a1f1dSLionel Sambuc     }
498*0a6a1f1dSLionel Sambuc     {
499*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
500*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
501*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
502*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
503*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
504*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
505*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
506*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
507*0a6a1f1dSLionel Sambuc         assert(*i == 1);
508*0a6a1f1dSLionel Sambuc         ++i;
509*0a6a1f1dSLionel Sambuc         assert(*i == 4);
510*0a6a1f1dSLionel Sambuc     }
511*0a6a1f1dSLionel Sambuc     {
512*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
513*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
514*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
515*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
516*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
517*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
518*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
519*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
520*0a6a1f1dSLionel Sambuc         assert(*i == 4);
521*0a6a1f1dSLionel Sambuc         ++i;
522*0a6a1f1dSLionel Sambuc         assert(*i == 5);
523*0a6a1f1dSLionel Sambuc         ++i;
524*0a6a1f1dSLionel Sambuc         assert(*i == 1);
525*0a6a1f1dSLionel Sambuc     }
526*0a6a1f1dSLionel Sambuc     {
527*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
528*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
529*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
530*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
531*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
532*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
533*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
534*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
535*0a6a1f1dSLionel Sambuc         assert(*i == 1);
536*0a6a1f1dSLionel Sambuc         ++i;
537*0a6a1f1dSLionel Sambuc         assert(*i == 4);
538*0a6a1f1dSLionel Sambuc         ++i;
539*0a6a1f1dSLionel Sambuc         assert(*i == 5);
540*0a6a1f1dSLionel Sambuc     }
541*0a6a1f1dSLionel Sambuc     {
542*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
543*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
544*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
545*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
546*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
547*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
548*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
549*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
550*0a6a1f1dSLionel Sambuc         assert(*i == 4);
551*0a6a1f1dSLionel Sambuc         ++i;
552*0a6a1f1dSLionel Sambuc         assert(*i == 5);
553*0a6a1f1dSLionel Sambuc         ++i;
554*0a6a1f1dSLionel Sambuc         assert(*i == 6);
555*0a6a1f1dSLionel Sambuc         ++i;
556*0a6a1f1dSLionel Sambuc         assert(*i == 1);
557*0a6a1f1dSLionel Sambuc     }
558*0a6a1f1dSLionel Sambuc     {
559*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
560*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
561*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2);
562*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
563*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
564*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
565*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
566*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
567*0a6a1f1dSLionel Sambuc         assert(*i == 1);
568*0a6a1f1dSLionel Sambuc         ++i;
569*0a6a1f1dSLionel Sambuc         assert(*i == 4);
570*0a6a1f1dSLionel Sambuc         ++i;
571*0a6a1f1dSLionel Sambuc         assert(*i == 5);
572*0a6a1f1dSLionel Sambuc         ++i;
573*0a6a1f1dSLionel Sambuc         assert(*i == 6);
574*0a6a1f1dSLionel Sambuc     }
575*0a6a1f1dSLionel Sambuc     {
576*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
577*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
578*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
579*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
580*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
581*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
582*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
583*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
584*0a6a1f1dSLionel Sambuc         assert(*i == 1);
585*0a6a1f1dSLionel Sambuc         ++i;
586*0a6a1f1dSLionel Sambuc         assert(*i == 2);
587*0a6a1f1dSLionel Sambuc     }
588*0a6a1f1dSLionel Sambuc     {
589*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
590*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
591*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
592*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
593*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
594*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
595*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
596*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
597*0a6a1f1dSLionel Sambuc         assert(*i == 1);
598*0a6a1f1dSLionel Sambuc         ++i;
599*0a6a1f1dSLionel Sambuc         assert(*i == 2);
600*0a6a1f1dSLionel Sambuc     }
601*0a6a1f1dSLionel Sambuc     {
602*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
603*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2;
604*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
605*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
606*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
607*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
608*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
609*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
610*0a6a1f1dSLionel Sambuc         assert(*i == 1);
611*0a6a1f1dSLionel Sambuc         ++i;
612*0a6a1f1dSLionel Sambuc         assert(*i == 2);
613*0a6a1f1dSLionel Sambuc     }
614*0a6a1f1dSLionel Sambuc     {
615*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
616*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
617*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
618*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
619*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
620*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
621*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
622*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
623*0a6a1f1dSLionel Sambuc         assert(*i == 4);
624*0a6a1f1dSLionel Sambuc         ++i;
625*0a6a1f1dSLionel Sambuc         assert(*i == 1);
626*0a6a1f1dSLionel Sambuc         ++i;
627*0a6a1f1dSLionel Sambuc         assert(*i == 2);
628*0a6a1f1dSLionel Sambuc     }
629*0a6a1f1dSLionel Sambuc     {
630*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
631*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
632*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
633*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
634*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
635*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
636*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
637*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
638*0a6a1f1dSLionel Sambuc         assert(*i == 1);
639*0a6a1f1dSLionel Sambuc         ++i;
640*0a6a1f1dSLionel Sambuc         assert(*i == 4);
641*0a6a1f1dSLionel Sambuc         ++i;
642*0a6a1f1dSLionel Sambuc         assert(*i == 2);
643*0a6a1f1dSLionel Sambuc     }
644*0a6a1f1dSLionel Sambuc     {
645*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
646*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
647*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
648*0a6a1f1dSLionel Sambuc         assert(l1.size() == 3);
649*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 3);
650*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
651*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
652*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
653*0a6a1f1dSLionel Sambuc         assert(*i == 1);
654*0a6a1f1dSLionel Sambuc         ++i;
655*0a6a1f1dSLionel Sambuc         assert(*i == 2);
656*0a6a1f1dSLionel Sambuc         ++i;
657*0a6a1f1dSLionel Sambuc         assert(*i == 4);
658*0a6a1f1dSLionel Sambuc     }
659*0a6a1f1dSLionel Sambuc     {
660*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
661*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
662*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
663*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
664*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
665*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
666*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
667*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
668*0a6a1f1dSLionel Sambuc         assert(*i == 4);
669*0a6a1f1dSLionel Sambuc         ++i;
670*0a6a1f1dSLionel Sambuc         assert(*i == 5);
671*0a6a1f1dSLionel Sambuc         ++i;
672*0a6a1f1dSLionel Sambuc         assert(*i == 1);
673*0a6a1f1dSLionel Sambuc         ++i;
674*0a6a1f1dSLionel Sambuc         assert(*i == 2);
675*0a6a1f1dSLionel Sambuc     }
676*0a6a1f1dSLionel Sambuc     {
677*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
678*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
679*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
680*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
681*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
682*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
683*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
684*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
685*0a6a1f1dSLionel Sambuc         assert(*i == 1);
686*0a6a1f1dSLionel Sambuc         ++i;
687*0a6a1f1dSLionel Sambuc         assert(*i == 4);
688*0a6a1f1dSLionel Sambuc         ++i;
689*0a6a1f1dSLionel Sambuc         assert(*i == 5);
690*0a6a1f1dSLionel Sambuc         ++i;
691*0a6a1f1dSLionel Sambuc         assert(*i == 2);
692*0a6a1f1dSLionel Sambuc     }
693*0a6a1f1dSLionel Sambuc     {
694*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
695*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
696*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
697*0a6a1f1dSLionel Sambuc         assert(l1.size() == 4);
698*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 4);
699*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
700*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
701*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
702*0a6a1f1dSLionel Sambuc         assert(*i == 1);
703*0a6a1f1dSLionel Sambuc         ++i;
704*0a6a1f1dSLionel Sambuc         assert(*i == 2);
705*0a6a1f1dSLionel Sambuc         ++i;
706*0a6a1f1dSLionel Sambuc         assert(*i == 4);
707*0a6a1f1dSLionel Sambuc         ++i;
708*0a6a1f1dSLionel Sambuc         assert(*i == 5);
709*0a6a1f1dSLionel Sambuc     }
710*0a6a1f1dSLionel Sambuc     {
711*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+3);
712*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
713*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2);
714*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
715*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
716*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
717*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
718*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
719*0a6a1f1dSLionel Sambuc         assert(*i == 4);
720*0a6a1f1dSLionel Sambuc         ++i;
721*0a6a1f1dSLionel Sambuc         assert(*i == 5);
722*0a6a1f1dSLionel Sambuc         ++i;
723*0a6a1f1dSLionel Sambuc         assert(*i == 6);
724*0a6a1f1dSLionel Sambuc         ++i;
725*0a6a1f1dSLionel Sambuc         assert(*i == 1);
726*0a6a1f1dSLionel Sambuc         ++i;
727*0a6a1f1dSLionel Sambuc         assert(*i == 2);
728*0a6a1f1dSLionel Sambuc         ++i;
729*0a6a1f1dSLionel Sambuc         assert(*i == 3);
730*0a6a1f1dSLionel Sambuc     }
731*0a6a1f1dSLionel Sambuc     {
732*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+3);
733*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
734*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2);
735*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
736*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
737*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
738*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
739*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
740*0a6a1f1dSLionel Sambuc         assert(*i == 1);
741*0a6a1f1dSLionel Sambuc         ++i;
742*0a6a1f1dSLionel Sambuc         assert(*i == 4);
743*0a6a1f1dSLionel Sambuc         ++i;
744*0a6a1f1dSLionel Sambuc         assert(*i == 5);
745*0a6a1f1dSLionel Sambuc         ++i;
746*0a6a1f1dSLionel Sambuc         assert(*i == 6);
747*0a6a1f1dSLionel Sambuc         ++i;
748*0a6a1f1dSLionel Sambuc         assert(*i == 2);
749*0a6a1f1dSLionel Sambuc         ++i;
750*0a6a1f1dSLionel Sambuc         assert(*i == 3);
751*0a6a1f1dSLionel Sambuc     }
752*0a6a1f1dSLionel Sambuc     {
753*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+3);
754*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
755*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 2), l2);
756*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
757*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
758*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
759*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
760*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
761*0a6a1f1dSLionel Sambuc         assert(*i == 1);
762*0a6a1f1dSLionel Sambuc         ++i;
763*0a6a1f1dSLionel Sambuc         assert(*i == 2);
764*0a6a1f1dSLionel Sambuc         ++i;
765*0a6a1f1dSLionel Sambuc         assert(*i == 4);
766*0a6a1f1dSLionel Sambuc         ++i;
767*0a6a1f1dSLionel Sambuc         assert(*i == 5);
768*0a6a1f1dSLionel Sambuc         ++i;
769*0a6a1f1dSLionel Sambuc         assert(*i == 6);
770*0a6a1f1dSLionel Sambuc         ++i;
771*0a6a1f1dSLionel Sambuc         assert(*i == 3);
772*0a6a1f1dSLionel Sambuc     }
773*0a6a1f1dSLionel Sambuc     {
774*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+3);
775*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
776*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin(), 3), l2);
777*0a6a1f1dSLionel Sambuc         assert(l1.size() == 6);
778*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 6);
779*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
780*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
781*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
782*0a6a1f1dSLionel Sambuc         assert(*i == 1);
783*0a6a1f1dSLionel Sambuc         ++i;
784*0a6a1f1dSLionel Sambuc         assert(*i == 2);
785*0a6a1f1dSLionel Sambuc         ++i;
786*0a6a1f1dSLionel Sambuc         assert(*i == 3);
787*0a6a1f1dSLionel Sambuc         ++i;
788*0a6a1f1dSLionel Sambuc         assert(*i == 4);
789*0a6a1f1dSLionel Sambuc         ++i;
790*0a6a1f1dSLionel Sambuc         assert(*i == 5);
791*0a6a1f1dSLionel Sambuc         ++i;
792*0a6a1f1dSLionel Sambuc         assert(*i == 6);
793*0a6a1f1dSLionel Sambuc     }
794*0a6a1f1dSLionel Sambuc #if _LIBCPP_DEBUG >= 1
795*0a6a1f1dSLionel Sambuc     {
796*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> v1(3);
797*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> v2(3);
798*0a6a1f1dSLionel Sambuc         v1.splice(v2.begin(), v2);
799*0a6a1f1dSLionel Sambuc         assert(false);
800*0a6a1f1dSLionel Sambuc     }
801*0a6a1f1dSLionel Sambuc #endif
802*0a6a1f1dSLionel Sambuc #endif
803*0a6a1f1dSLionel Sambuc }
804