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