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<T,Allocator>& x, iterator i);
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(a2, a2+1);
30*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
31*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
32*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
33*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
34*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
35*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
36*0a6a1f1dSLionel Sambuc         assert(*i == 4);
37*0a6a1f1dSLionel Sambuc     }
38*0a6a1f1dSLionel Sambuc     {
39*0a6a1f1dSLionel Sambuc         std::list<int> l1;
40*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
41*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
42*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
43*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
44*0a6a1f1dSLionel Sambuc         assert(l2.size() == 1);
45*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 1);
46*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
47*0a6a1f1dSLionel Sambuc         assert(*i == 4);
48*0a6a1f1dSLionel Sambuc         i = l2.begin();
49*0a6a1f1dSLionel Sambuc         assert(*i == 5);
50*0a6a1f1dSLionel Sambuc     }
51*0a6a1f1dSLionel Sambuc     {
52*0a6a1f1dSLionel Sambuc         std::list<int> l1;
53*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+2);
54*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin()));
55*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
56*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
57*0a6a1f1dSLionel Sambuc         assert(l2.size() == 1);
58*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 1);
59*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
60*0a6a1f1dSLionel Sambuc         assert(*i == 5);
61*0a6a1f1dSLionel Sambuc         i = l2.begin();
62*0a6a1f1dSLionel Sambuc         assert(*i == 4);
63*0a6a1f1dSLionel Sambuc     }
64*0a6a1f1dSLionel Sambuc     {
65*0a6a1f1dSLionel Sambuc         std::list<int> l1;
66*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
67*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
68*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
69*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
70*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
71*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
72*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
73*0a6a1f1dSLionel Sambuc         assert(*i == 4);
74*0a6a1f1dSLionel Sambuc         i = l2.begin();
75*0a6a1f1dSLionel Sambuc         assert(*i == 5);
76*0a6a1f1dSLionel Sambuc         ++i;
77*0a6a1f1dSLionel Sambuc         assert(*i == 6);
78*0a6a1f1dSLionel Sambuc     }
79*0a6a1f1dSLionel Sambuc     {
80*0a6a1f1dSLionel Sambuc         std::list<int> l1;
81*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
82*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin()));
83*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
84*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
85*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
86*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
87*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
88*0a6a1f1dSLionel Sambuc         assert(*i == 5);
89*0a6a1f1dSLionel Sambuc         i = l2.begin();
90*0a6a1f1dSLionel Sambuc         assert(*i == 4);
91*0a6a1f1dSLionel Sambuc         ++i;
92*0a6a1f1dSLionel Sambuc         assert(*i == 6);
93*0a6a1f1dSLionel Sambuc     }
94*0a6a1f1dSLionel Sambuc     {
95*0a6a1f1dSLionel Sambuc         std::list<int> l1;
96*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+3);
97*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin(), 2));
98*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
99*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
100*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
101*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
102*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
103*0a6a1f1dSLionel Sambuc         assert(*i == 6);
104*0a6a1f1dSLionel Sambuc         i = l2.begin();
105*0a6a1f1dSLionel Sambuc         assert(*i == 4);
106*0a6a1f1dSLionel Sambuc         ++i;
107*0a6a1f1dSLionel Sambuc         assert(*i == 5);
108*0a6a1f1dSLionel Sambuc     }
109*0a6a1f1dSLionel Sambuc     {
110*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
111*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, l1.begin());
112*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
113*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
114*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
115*0a6a1f1dSLionel Sambuc         assert(*i == 1);
116*0a6a1f1dSLionel Sambuc     }
117*0a6a1f1dSLionel Sambuc     {
118*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
119*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
120*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2, l2.begin());
121*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
122*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
123*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
124*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
125*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
126*0a6a1f1dSLionel Sambuc         assert(*i == 4);
127*0a6a1f1dSLionel Sambuc         ++i;
128*0a6a1f1dSLionel Sambuc         assert(*i == 1);
129*0a6a1f1dSLionel Sambuc     }
130*0a6a1f1dSLionel Sambuc     {
131*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+1);
132*0a6a1f1dSLionel Sambuc         std::list<int> l2(a2, a2+1);
133*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2, l2.begin());
134*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
135*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
136*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
137*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
138*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
139*0a6a1f1dSLionel Sambuc         assert(*i == 1);
140*0a6a1f1dSLionel Sambuc         ++i;
141*0a6a1f1dSLionel Sambuc         assert(*i == 4);
142*0a6a1f1dSLionel Sambuc     }
143*0a6a1f1dSLionel Sambuc     {
144*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
145*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, l1.begin());
146*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
147*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
148*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
149*0a6a1f1dSLionel Sambuc         assert(*i == 1);
150*0a6a1f1dSLionel Sambuc         ++i;
151*0a6a1f1dSLionel Sambuc         assert(*i == 2);
152*0a6a1f1dSLionel Sambuc     }
153*0a6a1f1dSLionel Sambuc     {
154*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
155*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, next(l1.begin()));
156*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
157*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
158*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
159*0a6a1f1dSLionel Sambuc         assert(*i == 2);
160*0a6a1f1dSLionel Sambuc         ++i;
161*0a6a1f1dSLionel Sambuc         assert(*i == 1);
162*0a6a1f1dSLionel Sambuc     }
163*0a6a1f1dSLionel Sambuc     {
164*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
165*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l1, l1.begin());
166*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
167*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
168*0a6a1f1dSLionel Sambuc         std::list<int>::const_iterator i = l1.begin();
169*0a6a1f1dSLionel Sambuc         assert(*i == 1);
170*0a6a1f1dSLionel Sambuc         ++i;
171*0a6a1f1dSLionel Sambuc         assert(*i == 2);
172*0a6a1f1dSLionel Sambuc     }
173*0a6a1f1dSLionel Sambuc     {
174*0a6a1f1dSLionel Sambuc         std::list<int> l1(a1, a1+2);
175*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l1, next(l1.begin()));
176*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
177*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
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 == 2);
182*0a6a1f1dSLionel Sambuc     }
183*0a6a1f1dSLionel Sambuc #if _LIBCPP_DEBUG >= 1
184*0a6a1f1dSLionel Sambuc     {
185*0a6a1f1dSLionel Sambuc         std::list<int> v1(3);
186*0a6a1f1dSLionel Sambuc         std::list<int> v2(3);
187*0a6a1f1dSLionel Sambuc         v1.splice(v1.begin(), v2, v1.begin());
188*0a6a1f1dSLionel Sambuc         assert(false);
189*0a6a1f1dSLionel Sambuc     }
190*0a6a1f1dSLionel Sambuc #endif
191*0a6a1f1dSLionel Sambuc #if __cplusplus >= 201103L
192*0a6a1f1dSLionel Sambuc     {
193*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
194*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
195*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
196*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
197*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
198*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
199*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
200*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
201*0a6a1f1dSLionel Sambuc         assert(*i == 4);
202*0a6a1f1dSLionel Sambuc     }
203*0a6a1f1dSLionel Sambuc     {
204*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
205*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
206*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
207*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
208*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
209*0a6a1f1dSLionel Sambuc         assert(l2.size() == 1);
210*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 1);
211*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
212*0a6a1f1dSLionel Sambuc         assert(*i == 4);
213*0a6a1f1dSLionel Sambuc         i = l2.begin();
214*0a6a1f1dSLionel Sambuc         assert(*i == 5);
215*0a6a1f1dSLionel Sambuc     }
216*0a6a1f1dSLionel Sambuc     {
217*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
218*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+2);
219*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin()));
220*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
221*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
222*0a6a1f1dSLionel Sambuc         assert(l2.size() == 1);
223*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 1);
224*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
225*0a6a1f1dSLionel Sambuc         assert(*i == 5);
226*0a6a1f1dSLionel Sambuc         i = l2.begin();
227*0a6a1f1dSLionel Sambuc         assert(*i == 4);
228*0a6a1f1dSLionel Sambuc     }
229*0a6a1f1dSLionel Sambuc     {
230*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
231*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
232*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, l2.begin());
233*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
234*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
235*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
236*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
237*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
238*0a6a1f1dSLionel Sambuc         assert(*i == 4);
239*0a6a1f1dSLionel Sambuc         i = l2.begin();
240*0a6a1f1dSLionel Sambuc         assert(*i == 5);
241*0a6a1f1dSLionel Sambuc         ++i;
242*0a6a1f1dSLionel Sambuc         assert(*i == 6);
243*0a6a1f1dSLionel Sambuc     }
244*0a6a1f1dSLionel Sambuc     {
245*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
246*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
247*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin()));
248*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
249*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
250*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
251*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
252*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
253*0a6a1f1dSLionel Sambuc         assert(*i == 5);
254*0a6a1f1dSLionel Sambuc         i = l2.begin();
255*0a6a1f1dSLionel Sambuc         assert(*i == 4);
256*0a6a1f1dSLionel Sambuc         ++i;
257*0a6a1f1dSLionel Sambuc         assert(*i == 6);
258*0a6a1f1dSLionel Sambuc     }
259*0a6a1f1dSLionel Sambuc     {
260*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1;
261*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+3);
262*0a6a1f1dSLionel Sambuc         l1.splice(l1.end(), l2, next(l2.begin(), 2));
263*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
264*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
265*0a6a1f1dSLionel Sambuc         assert(l2.size() == 2);
266*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 2);
267*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
268*0a6a1f1dSLionel Sambuc         assert(*i == 6);
269*0a6a1f1dSLionel Sambuc         i = l2.begin();
270*0a6a1f1dSLionel Sambuc         assert(*i == 4);
271*0a6a1f1dSLionel Sambuc         ++i;
272*0a6a1f1dSLionel Sambuc         assert(*i == 5);
273*0a6a1f1dSLionel Sambuc     }
274*0a6a1f1dSLionel Sambuc     {
275*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
276*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, l1.begin());
277*0a6a1f1dSLionel Sambuc         assert(l1.size() == 1);
278*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 1);
279*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
280*0a6a1f1dSLionel Sambuc         assert(*i == 1);
281*0a6a1f1dSLionel Sambuc     }
282*0a6a1f1dSLionel Sambuc     {
283*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
284*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
285*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l2, l2.begin());
286*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
287*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
288*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
289*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
290*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
291*0a6a1f1dSLionel Sambuc         assert(*i == 4);
292*0a6a1f1dSLionel Sambuc         ++i;
293*0a6a1f1dSLionel Sambuc         assert(*i == 1);
294*0a6a1f1dSLionel Sambuc     }
295*0a6a1f1dSLionel Sambuc     {
296*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+1);
297*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l2(a2, a2+1);
298*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l2, l2.begin());
299*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
300*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
301*0a6a1f1dSLionel Sambuc         assert(l2.size() == 0);
302*0a6a1f1dSLionel Sambuc         assert(distance(l2.begin(), l2.end()) == 0);
303*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
304*0a6a1f1dSLionel Sambuc         assert(*i == 1);
305*0a6a1f1dSLionel Sambuc         ++i;
306*0a6a1f1dSLionel Sambuc         assert(*i == 4);
307*0a6a1f1dSLionel Sambuc     }
308*0a6a1f1dSLionel Sambuc     {
309*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
310*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, l1.begin());
311*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
312*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
313*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<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     }
318*0a6a1f1dSLionel Sambuc     {
319*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
320*0a6a1f1dSLionel Sambuc         l1.splice(l1.begin(), l1, next(l1.begin()));
321*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
322*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
323*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
324*0a6a1f1dSLionel Sambuc         assert(*i == 2);
325*0a6a1f1dSLionel Sambuc         ++i;
326*0a6a1f1dSLionel Sambuc         assert(*i == 1);
327*0a6a1f1dSLionel Sambuc     }
328*0a6a1f1dSLionel Sambuc     {
329*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
330*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l1, l1.begin());
331*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
332*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
333*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
334*0a6a1f1dSLionel Sambuc         assert(*i == 1);
335*0a6a1f1dSLionel Sambuc         ++i;
336*0a6a1f1dSLionel Sambuc         assert(*i == 2);
337*0a6a1f1dSLionel Sambuc     }
338*0a6a1f1dSLionel Sambuc     {
339*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> l1(a1, a1+2);
340*0a6a1f1dSLionel Sambuc         l1.splice(next(l1.begin()), l1, next(l1.begin()));
341*0a6a1f1dSLionel Sambuc         assert(l1.size() == 2);
342*0a6a1f1dSLionel Sambuc         assert(distance(l1.begin(), l1.end()) == 2);
343*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>>::const_iterator i = l1.begin();
344*0a6a1f1dSLionel Sambuc         assert(*i == 1);
345*0a6a1f1dSLionel Sambuc         ++i;
346*0a6a1f1dSLionel Sambuc         assert(*i == 2);
347*0a6a1f1dSLionel Sambuc     }
348*0a6a1f1dSLionel Sambuc #if _LIBCPP_DEBUG >= 1
349*0a6a1f1dSLionel Sambuc     {
350*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> v1(3);
351*0a6a1f1dSLionel Sambuc         std::list<int, min_allocator<int>> v2(3);
352*0a6a1f1dSLionel Sambuc         v1.splice(v1.begin(), v2, v1.begin());
353*0a6a1f1dSLionel Sambuc         assert(false);
354*0a6a1f1dSLionel Sambuc     }
355*0a6a1f1dSLionel Sambuc #endif
356*0a6a1f1dSLionel Sambuc #endif
357*0a6a1f1dSLionel Sambuc }
358