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::multiset<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::multiset<int>::iterator i;
72 std::multiset<int>::const_iterator k = i;
74 for (int j = 1; j <= 8; ++j)
75 for (int n = 0; n < 3; ++n, ++i)
107 const std::multiset<int> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
108 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
109 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
110 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
111 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
112 std::multiset<int>::const_iterator i;
114 for (int j = 1; j <= 8; ++j)
115 for (int k = 0; k < 3; ++k, ++i)
118 #if TEST_STD_VER >= 11
148 std::multiset<int, std::less<int>, min_allocator<int>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
149 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
150 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
151 std::multiset<int, std::less<int>, min_allocator<int>>::iterator i;
153 std::multiset<int, std::less<int>, min_allocator<int>>::const_iterator k = i;
155 for (int j = 1; j <= 8; ++j)
156 for (int n = 0; n < 3; ++n, ++i)
188 const std::multiset<int, std::less<int>, min_allocator<int>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
189 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
190 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
191 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
192 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
193 std::multiset<int, std::less<int>, min_allocator<int>>::const_iterator i;
195 for (int j = 1; j <= 8; ++j)
196 for (int k = 0; k < 3; ++k, ++i)
200 #if TEST_STD_VER > 11
202 typedef std::multiset<int> C;
203 C::iterator ii1{}, ii2{};
204 C::iterator ii4 = ii1;
205 C::const_iterator cii{};
206 assert ( ii1 == ii2 );
207 assert ( ii1 == ii4 );
209 assert (!(ii1 != ii2 ));
211 assert ( (ii1 == cii ));
212 assert ( (cii == ii1 ));
213 assert (!(ii1 != cii ));
214 assert (!(cii != ii1 ));