//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // reverse_iterator // template // requires HasMinus // auto operator-(const reverse_iterator& x, const reverse_iterator& y) // -> decltype(y.base() - x.base()); #include #include #include #include "test_iterators.h" template void test(It1 l, It2 r, std::ptrdiff_t x) { const std::reverse_iterator r1(l); const std::reverse_iterator r2(r); assert((r1 - r2) == x); } int main() { char s[3] = {0}; test(random_access_iterator(s), random_access_iterator(s), 0); test(random_access_iterator(s), random_access_iterator(s+1), 1); test(random_access_iterator(s+1), random_access_iterator(s), -1); test(s, s, 0); test(s, s+1, 1); test(s+1, s, -1); }