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