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 erase(const_iterator position);
13
14#include <vector>
15#include <cassert>
16
17#include "min_allocator.h"
18
19int main()
20{
21    {
22    int a1[] = {1, 2, 3};
23    std::vector<int> l1(a1, a1+3);
24    std::vector<int>::const_iterator i = l1.begin();
25    ++i;
26    std::vector<int>::iterator j = l1.erase(i);
27    assert(l1.size() == 2);
28    assert(distance(l1.begin(), l1.end()) == 2);
29    assert(*j == 3);
30    assert(*l1.begin() == 1);
31    assert(*next(l1.begin()) == 3);
32    j = l1.erase(j);
33    assert(j == l1.end());
34    assert(l1.size() == 1);
35    assert(distance(l1.begin(), l1.end()) == 1);
36    assert(*l1.begin() == 1);
37    j = l1.erase(l1.begin());
38    assert(j == l1.end());
39    assert(l1.size() == 0);
40    assert(distance(l1.begin(), l1.end()) == 0);
41    }
42#if __cplusplus >= 201103L
43    {
44    int a1[] = {1, 2, 3};
45    std::vector<int, min_allocator<int>> l1(a1, a1+3);
46    std::vector<int, min_allocator<int>>::const_iterator i = l1.begin();
47    ++i;
48    std::vector<int, min_allocator<int>>::iterator j = l1.erase(i);
49    assert(l1.size() == 2);
50    assert(distance(l1.begin(), l1.end()) == 2);
51    assert(*j == 3);
52    assert(*l1.begin() == 1);
53    assert(*next(l1.begin()) == 3);
54    j = l1.erase(j);
55    assert(j == l1.end());
56    assert(l1.size() == 1);
57    assert(distance(l1.begin(), l1.end()) == 1);
58    assert(*l1.begin() == 1);
59    j = l1.erase(l1.begin());
60    assert(j == l1.end());
61    assert(l1.size() == 0);
62    assert(distance(l1.begin(), l1.end()) == 0);
63    }
64#endif
65}
66