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 begin();
13 // iterator end();
14 // const_iterator begin() const;
15 // const_iterator end() const;
16 // const_iterator cbegin() const;
17 // const_iterator cend() const;
18
19 #include <vector>
20 #include <cassert>
21 #include <iterator>
22
23 #include "min_allocator.h"
24
main()25 int main()
26 {
27 {
28 typedef bool T;
29 typedef std::vector<T> C;
30 C c;
31 C::iterator i = c.begin();
32 C::iterator j = c.end();
33 assert(std::distance(i, j) == 0);
34 assert(i == j);
35 }
36 {
37 typedef bool T;
38 typedef std::vector<T> C;
39 const C c;
40 C::const_iterator i = c.begin();
41 C::const_iterator j = c.end();
42 assert(std::distance(i, j) == 0);
43 assert(i == j);
44 }
45 {
46 typedef bool T;
47 typedef std::vector<T> C;
48 C c;
49 C::const_iterator i = c.cbegin();
50 C::const_iterator j = c.cend();
51 assert(std::distance(i, j) == 0);
52 assert(i == j);
53 assert(i == c.end());
54 }
55 {
56 typedef bool T;
57 typedef std::vector<T> C;
58 C::iterator i;
59 C::const_iterator j;
60 }
61 #if __cplusplus >= 201103L
62 {
63 typedef bool T;
64 typedef std::vector<T, min_allocator<T>> C;
65 C c;
66 C::iterator i = c.begin();
67 C::iterator j = c.end();
68 assert(std::distance(i, j) == 0);
69 assert(i == j);
70 }
71 {
72 typedef bool T;
73 typedef std::vector<T, min_allocator<T>> C;
74 const C c;
75 C::const_iterator i = c.begin();
76 C::const_iterator j = c.end();
77 assert(std::distance(i, j) == 0);
78 assert(i == j);
79 }
80 {
81 typedef bool T;
82 typedef std::vector<T, min_allocator<T>> C;
83 C c;
84 C::const_iterator i = c.cbegin();
85 C::const_iterator j = c.cend();
86 assert(std::distance(i, j) == 0);
87 assert(i == j);
88 assert(i == c.end());
89 }
90 {
91 typedef bool T;
92 typedef std::vector<T, min_allocator<T>> C;
93 C::iterator i;
94 C::const_iterator j;
95 }
96 #endif
97 #if _LIBCPP_STD_VER > 11
98 { // N3644 testing
99 std::vector<bool>::iterator ii1{}, ii2{};
100 std::vector<bool>::iterator ii4 = ii1;
101 std::vector<bool>::const_iterator cii{};
102 assert ( ii1 == ii2 );
103 assert ( ii1 == ii4 );
104
105 assert (!(ii1 != ii2 ));
106
107 assert ( (ii1 == cii ));
108 assert ( (cii == ii1 ));
109 assert (!(ii1 != cii ));
110 assert (!(cii != ii1 ));
111 assert (!(ii1 < cii ));
112 assert (!(cii < ii1 ));
113 assert ( (ii1 <= cii ));
114 assert ( (cii <= ii1 ));
115 assert (!(ii1 > cii ));
116 assert (!(cii > ii1 ));
117 assert ( (ii1 >= cii ));
118 assert ( (cii >= ii1 ));
119 assert (cii - ii1 == 0);
120 assert (ii1 - cii == 0);
121 }
122 #endif
123 }
124