1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 // <vector>
11 
12 // iterator insert(const_iterator position, const value_type& x);
13 
14 #if _LIBCPP_DEBUG >= 1
15 #define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
16 #endif
17 
18 #include <vector>
19 #include <cassert>
20 #include "../../../stack_allocator.h"
21 #include "../../../min_allocator.h"
22 
23 int main()
24 {
25     {
26         std::vector<int> v(100);
27         std::vector<int>::iterator i = v.insert(v.cbegin() + 10, 1);
28         assert(v.size() == 101);
29         assert(i == v.begin() + 10);
30         int j;
31         for (j = 0; j < 10; ++j)
32             assert(v[j] == 0);
33         assert(v[j] == 1);
34         for (++j; j < 101; ++j)
35             assert(v[j] == 0);
36     }
37     {
38         std::vector<int, stack_allocator<int, 300> > v(100);
39         std::vector<int, stack_allocator<int, 300> >::iterator i = v.insert(v.cbegin() + 10, 1);
40         assert(v.size() == 101);
41         assert(i == v.begin() + 10);
42         int j;
43         for (j = 0; j < 10; ++j)
44             assert(v[j] == 0);
45         assert(v[j] == 1);
46         for (++j; j < 101; ++j)
47             assert(v[j] == 0);
48     }
49 #if _LIBCPP_DEBUG >= 1
50     {
51         std::vector<int> v1(3);
52         std::vector<int> v2(3);
53         int i = 4;
54         v1.insert(v2.begin(), i);
55         assert(false);
56     }
57 #endif
58 #if __cplusplus >= 201103L
59     {
60         std::vector<int, min_allocator<int>> v(100);
61         std::vector<int, min_allocator<int>>::iterator i = v.insert(v.cbegin() + 10, 1);
62         assert(v.size() == 101);
63         assert(i == v.begin() + 10);
64         int j;
65         for (j = 0; j < 10; ++j)
66             assert(v[j] == 0);
67         assert(v[j] == 1);
68         for (++j; j < 101; ++j)
69             assert(v[j] == 0);
70     }
71 #if _LIBCPP_DEBUG >= 1
72     {
73         std::vector<int, min_allocator<int>> v1(3);
74         std::vector<int, min_allocator<int>> v2(3);
75         int i = 4;
76         v1.insert(v2.begin(), i);
77         assert(false);
78     }
79 #endif
80 #endif
81 }
82