Home | History | Annotate | Download | only in string.iterators
      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 // <string>
     11 
     12 //       reverse_iterator rend();
     13 // const_reverse_iterator rend() const;
     14 
     15 #include <string>
     16 #include <cassert>
     17 
     18 #include "min_allocator.h"
     19 
     20 template <class S>
     21 void
     22 test(S s)
     23 {
     24     const S& cs = s;
     25     typename S::reverse_iterator e = s.rend();
     26     typename S::const_reverse_iterator ce = cs.rend();
     27     if (s.empty())
     28     {
     29         assert(e == s.rbegin());
     30         assert(ce == cs.rbegin());
     31     }
     32     assert(e - s.rbegin() == s.size());
     33     assert(ce - cs.rbegin() == cs.size());
     34 }
     35 
     36 int main()
     37 {
     38     {
     39     typedef std::string S;
     40     test(S());
     41     test(S("123"));
     42     }
     43 #if __cplusplus >= 201103L
     44     {
     45     typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
     46     test(S());
     47     test(S("123"));
     48     }
     49 #endif
     50 }
     51