difference_type.pass.cpp revision 712522cfd8f61321b4f197ec0de02b0146afb5a5
1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//===----------------------------------------------------------------------===//
2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//
3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//                     The LLVM Compiler Infrastructure
4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//
5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// This file is distributed under the University of Illinois Open Source
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// License. See LICENSE.TXT for details.
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//===----------------------------------------------------------------------===//
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// <iterator>
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// reverse_iterator
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson// requires RandomAccessIterator<Iter>
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson//   reverse_iterator operator-(difference_type n) const;
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#include <iterator>
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#include <cassert>
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson#include "../../../../iterators.h"
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsontemplate <class It>
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonvoid
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsontest(It i, typename std::iterator_traits<It>::difference_type n, It x)
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson{
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    const std::reverse_iterator<It> r(i);
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    std::reverse_iterator<It> rr = r - n;
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    assert(rr.base() == x);
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonint main()
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson{
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    const char* s = "1234567890";
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    test(random_access_iterator<const char*>(s+5), 5, random_access_iterator<const char*>(s+10));
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    test(s+5, 5, s+10);
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson