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// <list> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// void splice(const_iterator position, list<T,Allocator>& x, iterator i); 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 145e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1 152062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) 162062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant#endif 172062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <list> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 21061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 2229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int a1[] = {1, 2, 3}; 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int a2[] = {4, 5, 6}; 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+1); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 0); 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+2); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 1); 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 1); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+2); 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin())); 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 1); 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 1); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 2); 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin())); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 2); 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1; 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin(), 2)); 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 2); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+1); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, l1.begin()); 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 1); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+1); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+1); 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l2, l2.begin()); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 0); 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+1); 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+1); 133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(next(l1.begin()), l2, l2.begin()); 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 0); 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+2); 145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, l1.begin()); 146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+2); 155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, next(l1.begin())); 156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+2); 165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(next(l1.begin()), l1, l1.begin()); 166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+2); 175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(next(l1.begin()), l1, next(l1.begin())); 176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 2); 177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 1835e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1 1842062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant { 1852062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant std::list<int> v1(3); 1862062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant std::list<int> v2(3); 1872062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant v1.splice(v1.begin(), v2, v1.begin()); 1882062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant assert(false); 1892062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant } 1902062f377728e6c2a77842ca5b2c6428aab605ebcHoward Hinnant#endif 19129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#if __cplusplus >= 201103L 19229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 19329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 19429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+1); 19529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 19629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 19729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 19829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 0); 19929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 20029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 20129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 20229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 20329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 20429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 20529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+2); 20629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 20729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 20829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 20929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 1); 21029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 1); 21129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 21229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 21329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant i = l2.begin(); 21429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 5); 21529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 21629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 21729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 21829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+2); 21929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin())); 22029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 22129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 22229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 1); 22329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 1); 22429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 22529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 5); 22629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant i = l2.begin(); 22729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 22829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 22929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 23029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 23129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+3); 23229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, l2.begin()); 23329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 23429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 23529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 2); 23629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 23729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 23829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 23929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant i = l2.begin(); 24029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 5); 24129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 24229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 6); 24329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 24429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 24529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 24629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+3); 24729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin())); 24829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 24929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 25029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 2); 25129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 25229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 25329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 5); 25429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant i = l2.begin(); 25529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 25629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 25729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 6); 25829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 25929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 26029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1; 26129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+3); 26229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin(), 2)); 26329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 26429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 26529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 2); 26629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 2); 26729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 26829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 6); 26929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant i = l2.begin(); 27029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 27129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 27229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 5); 27329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 27429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 27529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+1); 27629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.begin(), l1, l1.begin()); 27729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 1); 27829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 1); 27929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 28029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 28129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 28229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 28329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+1); 28429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+1); 28529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.begin(), l2, l2.begin()); 28629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 28729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 28829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 0); 28929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 29029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 29129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 29229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 29329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 29429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 29529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 29629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+1); 29729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l2(a2, a2+1); 29829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(next(l1.begin()), l2, l2.begin()); 29929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 30029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 30129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l2.size() == 0); 30229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l2.begin(), l2.end()) == 0); 30329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 30429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 30529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 30629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 4); 30729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 30829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 30929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+2); 31029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.begin(), l1, l1.begin()); 31129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 31229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 31329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 31429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 31529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 31629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 2); 31729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 31829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 31929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+2); 32029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(l1.begin(), l1, next(l1.begin())); 32129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 32229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 32329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 32429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 2); 32529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 32629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 32729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 32829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 32929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+2); 33029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(next(l1.begin()), l1, l1.begin()); 33129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 33229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 33329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 33429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 33529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 33629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 2); 33729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 33829f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 33929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> l1(a1, a1+2); 34029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant l1.splice(next(l1.begin()), l1, next(l1.begin())); 34129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(l1.size() == 2); 34229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(distance(l1.begin(), l1.end()) == 2); 34329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 34429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 1); 34529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant ++i; 34629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(*i == 2); 34729f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 3485e57142c5902c3f73a6fdcb8cab55e88ffb43a56Howard Hinnant#if _LIBCPP_DEBUG >= 1 34929f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant { 35029f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> v1(3); 35129f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant std::list<int, min_allocator<int>> v2(3); 35229f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant v1.splice(v1.begin(), v2, v1.begin()); 35329f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant assert(false); 35429f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant } 35529f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#endif 35629f7432ff3a5c503a98a66ae46dd571b651c88b5Howard Hinnant#endif 357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 358