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 // UNSUPPORTED: c++98, c++03, c++11 11 // <iterator> 12 13 // reverse_iterator 14 15 // template <class Iterator> 16 // constexpr reverse_iterator<Iterator> 17 // make_reverse_iterator(Iterator i); 18 // 19 // constexpr in C++17 20 21 #include <iterator> 22 #include <cassert> 23 24 #include "test_macros.h" 25 #include "test_iterators.h" 26 27 template <class It> 28 void test(It i)29test(It i) 30 { 31 const std::reverse_iterator<It> r = std::make_reverse_iterator(i); 32 assert(r.base() == i); 33 } 34 main()35int main() 36 { 37 const char* s = "1234567890"; 38 random_access_iterator<const char*>b(s); 39 random_access_iterator<const char*>e(s+10); 40 while ( b != e ) 41 test ( b++ ); 42 43 #if TEST_STD_VER > 14 44 { 45 constexpr const char *p = "123456789"; 46 constexpr auto it1 = std::make_reverse_iterator(p); 47 static_assert(it1.base() == p, ""); 48 } 49 #endif 50 } 51 52