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 //===----------------------------------------------------------------------===//
15 // const_iterator begin() const;
17 // const_iterator end() const;
19 // reverse_iterator rbegin();
20 // const_reverse_iterator rbegin() const;
21 // reverse_iterator rend();
22 // const_reverse_iterator rend() const;
24 // const_iterator cbegin() const;
25 // const_iterator cend() const;
26 // const_reverse_iterator crbegin() const;
27 // const_reverse_iterator crend() const;
33 #include "test_macros.h"
34 #include "min_allocator.h"
67 std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
68 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
69 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
70 std::set<int>::iterator i;
72 std::set<int>::const_iterator k = i;
74 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
106 const std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
107 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
108 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
109 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
110 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
111 std::set<int>::const_iterator i;
113 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
116 #if TEST_STD_VER >= 11
146 std::set<int, std::less<int>, min_allocator<int>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
147 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
148 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
149 std::set<int, std::less<int>, min_allocator<int>>::iterator i;
151 std::set<int, std::less<int>, min_allocator<int>>::const_iterator k = i;
153 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
185 const std::set<int, std::less<int>, min_allocator<int>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
186 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
187 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
188 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
189 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
190 std::set<int, std::less<int>, min_allocator<int>>::const_iterator i;
192 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
196 #if TEST_STD_VER > 11
198 typedef std::set<int> C;
199 C::iterator ii1{}, ii2{};
200 C::iterator ii4 = ii1;
201 C::const_iterator cii{};
202 assert ( ii1 == ii2 );
203 assert ( ii1 == ii4 );
205 assert (!(ii1 != ii2 ));
207 assert ( (ii1 == cii ));
208 assert ( (cii == ii1 ));
209 assert (!(ii1 != cii ));
210 assert (!(cii != ii1 ));