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 //===----------------------------------------------------------------------===//
14 // const_iterator begin() const;
15 // const_iterator end() const;
16 // const_iterator cbegin() const;
17 // const_iterator cend() const;
19 #include <forward_list>
23 #include "min_allocator.h"
29 typedef std::forward_list<T> C;
31 C::iterator i = c.begin();
32 C::iterator j = c.end();
33 assert(std::distance(i, j) == 0);
38 typedef std::forward_list<T> C;
40 C::const_iterator i = c.begin();
41 C::const_iterator j = c.end();
42 assert(std::distance(i, j) == 0);
47 typedef std::forward_list<T> C;
49 C::const_iterator i = c.cbegin();
50 C::const_iterator j = c.cend();
51 assert(std::distance(i, j) == 0);
57 typedef std::forward_list<T> C;
58 const T t[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
59 C c(std::begin(t), std::end(t));
60 C::iterator i = c.begin();
66 assert(std::distance(c.begin(), c.end()) == 10);
70 typedef std::forward_list<T> C;
74 #if __cplusplus >= 201103L
77 typedef std::forward_list<T, min_allocator<T>> C;
79 C::iterator i = c.begin();
80 C::iterator j = c.end();
81 assert(std::distance(i, j) == 0);
86 typedef std::forward_list<T, min_allocator<T>> C;
88 C::const_iterator i = c.begin();
89 C::const_iterator j = c.end();
90 assert(std::distance(i, j) == 0);
95 typedef std::forward_list<T, min_allocator<T>> C;
97 C::const_iterator i = c.cbegin();
98 C::const_iterator j = c.cend();
99 assert(std::distance(i, j) == 0);
101 assert(i == c.end());
105 typedef std::forward_list<T, min_allocator<T>> C;
106 const T t[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
107 C c(std::begin(t), std::end(t));
108 C::iterator i = c.begin();
114 assert(std::distance(c.begin(), c.end()) == 10);
118 typedef std::forward_list<T, min_allocator<T>> C;
123 #if _LIBCPP_STD_VER > 11
125 std::forward_list<int>::iterator ii1{}, ii2{};
126 std::forward_list<int>::iterator ii4 = ii1;
127 std::forward_list<int>::const_iterator cii{};
128 assert ( ii1 == ii2 );
129 assert ( ii1 == ii4 );
131 assert (!(ii1 != ii2 ));
133 assert ( (ii1 == cii ));
134 assert ( (cii == ii1 ));
135 assert (!(ii1 != cii ));
136 assert (!(cii != ii1 ));
138 // std::forward_list<int> c;
139 // assert ( ii1 != c.cbegin());
140 // assert ( cii != c.begin());
141 // assert ( cii != c.cend());
142 // assert ( ii1 != c.end());