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