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 // <array> 11 12 // iterator, const_iterator 13 14 #include <array> 15 #include <iterator> 16 #include <cassert> 17 main()18int main() 19 { 20 { 21 typedef std::array<int, 5> C; 22 C c; 23 C::iterator i; 24 i = c.begin(); 25 C::const_iterator j; 26 j = c.cbegin(); 27 assert(i == j); 28 } 29 { 30 typedef std::array<int, 0> C; 31 C c; 32 C::iterator i; 33 i = c.begin(); 34 C::const_iterator j; 35 j = c.cbegin(); 36 assert(i == j); 37 } 38 39 #if _LIBCPP_STD_VER > 11 40 { // N3644 testing 41 { 42 typedef std::array<int, 5> C; 43 C::iterator ii1{}, ii2{}; 44 C::iterator ii4 = ii1; 45 C::const_iterator cii{}; 46 assert ( ii1 == ii2 ); 47 assert ( ii1 == ii4 ); 48 assert ( ii1 == cii ); 49 50 assert ( !(ii1 != ii2 )); 51 assert ( !(ii1 != cii )); 52 53 C c; 54 assert ( c.begin() == std::begin(c)); 55 assert ( c.cbegin() == std::cbegin(c)); 56 assert ( c.rbegin() == std::rbegin(c)); 57 assert ( c.crbegin() == std::crbegin(c)); 58 assert ( c.end() == std::end(c)); 59 assert ( c.cend() == std::cend(c)); 60 assert ( c.rend() == std::rend(c)); 61 assert ( c.crend() == std::crend(c)); 62 63 assert ( std::begin(c) != std::end(c)); 64 assert ( std::rbegin(c) != std::rend(c)); 65 assert ( std::cbegin(c) != std::cend(c)); 66 assert ( std::crbegin(c) != std::crend(c)); 67 } 68 { 69 typedef std::array<int, 0> C; 70 C::iterator ii1{}, ii2{}; 71 C::iterator ii4 = ii1; 72 C::const_iterator cii{}; 73 assert ( ii1 == ii2 ); 74 assert ( ii1 == ii4 ); 75 76 assert (!(ii1 != ii2 )); 77 78 assert ( (ii1 == cii )); 79 assert ( (cii == ii1 )); 80 assert (!(ii1 != cii )); 81 assert (!(cii != ii1 )); 82 assert (!(ii1 < cii )); 83 assert (!(cii < ii1 )); 84 assert ( (ii1 <= cii )); 85 assert ( (cii <= ii1 )); 86 assert (!(ii1 > cii )); 87 assert (!(cii > ii1 )); 88 assert ( (ii1 >= cii )); 89 assert ( (cii >= ii1 )); 90 assert (cii - ii1 == 0); 91 assert (ii1 - cii == 0); 92 93 C c; 94 assert ( c.begin() == std::begin(c)); 95 assert ( c.cbegin() == std::cbegin(c)); 96 assert ( c.rbegin() == std::rbegin(c)); 97 assert ( c.crbegin() == std::crbegin(c)); 98 assert ( c.end() == std::end(c)); 99 assert ( c.cend() == std::cend(c)); 100 assert ( c.rend() == std::rend(c)); 101 assert ( c.crend() == std::crend(c)); 102 103 assert ( std::begin(c) == std::end(c)); 104 assert ( std::rbegin(c) == std::rend(c)); 105 assert ( std::cbegin(c) == std::cend(c)); 106 assert ( std::crbegin(c) == std::crend(c)); 107 } 108 } 109 #endif 110 } 111