1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // XFAIL: libcpp-no-exceptions
13 // template <InputIterator Iter>
14 // iterator insert(const_iterator position, Iter first, Iter last);
16 // UNSUPPORTED: sanitizer-new-delete
18 #if _LIBCPP_DEBUG >= 1
19 #define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
25 #include "test_iterators.h"
26 #include "min_allocator.h"
28 int throw_next = 0xFFFF;
31 void* operator new(std::size_t s) throw(std::bad_alloc)
34 throw std::bad_alloc();
37 return std::malloc(s);
40 void operator delete(void* p) throw()
51 std::list<int>::iterator i = l1.insert(l1.begin(), a1, a1+3);
52 assert(i == l1.begin());
53 assert(l1.size() == 3);
54 assert(distance(l1.begin(), l1.end()) == 3);
62 i = l1.insert(i, a2, a2+3);
64 assert(l1.size() == 6);
65 assert(distance(l1.begin(), l1.end()) == 6);
79 int save_count = count;
82 i = l1.insert(i, a2, a2+3);
88 assert(save_count == count);
89 assert(l1.size() == 6);
90 assert(distance(l1.begin(), l1.end()) == 6);
105 #if _LIBCPP_DEBUG >= 1
107 std::list<int> v(100);
108 std::list<int> v2(100);
109 int a[] = {1, 2, 3, 4, 5};
110 const int N = sizeof(a)/sizeof(a[0]);
111 std::list<int>::iterator i = v.insert(next(v2.cbegin(), 10), input_iterator<const int*>(a),
112 input_iterator<const int*>(a+N));
116 #if __cplusplus >= 201103L
118 int a1[] = {1, 2, 3};
119 std::list<int, min_allocator<int>> l1;
120 std::list<int, min_allocator<int>>::iterator i = l1.insert(l1.begin(), a1, a1+3);
121 assert(i == l1.begin());
122 assert(l1.size() == 3);
123 assert(distance(l1.begin(), l1.end()) == 3);
130 int a2[] = {4, 5, 6};
131 i = l1.insert(i, a2, a2+3);
133 assert(l1.size() == 6);
134 assert(distance(l1.begin(), l1.end()) == 6);
148 int save_count = count;
151 i = l1.insert(i, a2, a2+3);
157 assert(save_count == count);
158 assert(l1.size() == 6);
159 assert(distance(l1.begin(), l1.end()) == 6);
173 #if _LIBCPP_DEBUG >= 1
176 std::list<int, min_allocator<int>> v(100);
177 std::list<int, min_allocator<int>> v2(100);
178 int a[] = {1, 2, 3, 4, 5};
179 const int N = sizeof(a)/sizeof(a[0]);
180 std::list<int, min_allocator<int>>::iterator i = v.insert(next(v2.cbegin(), 10), input_iterator<const int*>(a),
181 input_iterator<const int*>(a+N));