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// <deque>
11
12// Test nested types and default template args:
13
14// template <class T, class Allocator = allocator<T> >
15// class deque;
16
17// iterator, const_iterator
18
19#include <deque>
20#include <iterator>
21#include <cassert>
22
23#include "min_allocator.h"
24
25int main()
26{
27    {
28    typedef std::deque<int> C;
29    C c;
30    C::iterator i;
31    i = c.begin();
32    C::const_iterator j;
33    j = c.cbegin();
34    assert(i == j);
35    }
36#if __cplusplus >= 201103L
37    {
38    typedef std::deque<int, min_allocator<int>> C;
39    C c;
40    C::iterator i;
41    i = c.begin();
42    C::const_iterator j;
43    j = c.cbegin();
44    assert(i == j);
45    }
46#endif
47#if _LIBCPP_STD_VER > 11
48    { // N3644 testing
49        std::deque<int>::iterator ii1{}, ii2{};
50        std::deque<int>::iterator ii4 = ii1;
51        std::deque<int>::const_iterator cii{};
52        assert ( ii1 == ii2 );
53        assert ( ii1 == ii4 );
54
55        assert (!(ii1 != ii2 ));
56
57        assert ( (ii1 == cii ));
58        assert ( (cii == ii1 ));
59        assert (!(ii1 != cii ));
60        assert (!(cii != ii1 ));
61        assert (!(ii1 <  cii ));
62        assert (!(cii <  ii1 ));
63        assert ( (ii1 <= cii ));
64        assert ( (cii <= ii1 ));
65        assert (!(ii1 >  cii ));
66        assert (!(cii >  ii1 ));
67        assert ( (ii1 >= cii ));
68        assert ( (cii >= ii1 ));
69        assert (cii - ii1 == 0);
70        assert (ii1 - cii == 0);
71
72//         std::deque<int> c;
73//         assert ( ii1 != c.cbegin());
74//         assert ( cii != c.begin());
75//         assert ( cii != c.cend());
76//         assert ( ii1 != c.end());
77    }
78#endif
79}
80