130660a898545416f0fea2d717f16f75640001e38Ted Kremenek//===----------------------------------------------------------------------===// 230660a898545416f0fea2d717f16f75640001e38Ted Kremenek// 330660a898545416f0fea2d717f16f75640001e38Ted Kremenek// The LLVM Compiler Infrastructure 430660a898545416f0fea2d717f16f75640001e38Ted Kremenek// 530660a898545416f0fea2d717f16f75640001e38Ted Kremenek// This file is dual licensed under the MIT and the University of Illinois Open 630660a898545416f0fea2d717f16f75640001e38Ted Kremenek// Source Licenses. See LICENSE.TXT for details. 730660a898545416f0fea2d717f16f75640001e38Ted Kremenek// 830660a898545416f0fea2d717f16f75640001e38Ted Kremenek//===----------------------------------------------------------------------===// 930660a898545416f0fea2d717f16f75640001e38Ted Kremenek 1030660a898545416f0fea2d717f16f75640001e38Ted Kremenek// <iterator> 1130660a898545416f0fea2d717f16f75640001e38Ted Kremenek 1230660a898545416f0fea2d717f16f75640001e38Ted Kremenek// move_iterator 1330660a898545416f0fea2d717f16f75640001e38Ted Kremenek 1430660a898545416f0fea2d717f16f75640001e38Ted Kremenek// requires RandomAccessIterator<Iter> 1530a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth// move_iterator& operator-=(difference_type n); 161921b58a2aba4f5073d6634d476356b6a4ff8815Fariborz Jahanian 1730660a898545416f0fea2d717f16f75640001e38Ted Kremenek#include <iterator> 1830660a898545416f0fea2d717f16f75640001e38Ted Kremenek#include <cassert> 1930660a898545416f0fea2d717f16f75640001e38Ted Kremenek 2037ed12720a35b7bfa1c4de73ad6f1c6c1c88ee17Argyrios Kyrtzidis#include "test_iterators.h" 2130660a898545416f0fea2d717f16f75640001e38Ted Kremenek 2230660a898545416f0fea2d717f16f75640001e38Ted Kremenektemplate <class It> 2330660a898545416f0fea2d717f16f75640001e38Ted Kremenekvoid 2430660a898545416f0fea2d717f16f75640001e38Ted Kremenektest(It i, typename std::iterator_traits<It>::difference_type n, It x) 2530660a898545416f0fea2d717f16f75640001e38Ted Kremenek{ 2630660a898545416f0fea2d717f16f75640001e38Ted Kremenek std::move_iterator<It> r(i); 2730660a898545416f0fea2d717f16f75640001e38Ted Kremenek std::move_iterator<It>& rr = r -= n; 2830660a898545416f0fea2d717f16f75640001e38Ted Kremenek assert(r.base() == x); 2930660a898545416f0fea2d717f16f75640001e38Ted Kremenek assert(&rr == &r); 3030660a898545416f0fea2d717f16f75640001e38Ted Kremenek} 3130660a898545416f0fea2d717f16f75640001e38Ted Kremenek 3230660a898545416f0fea2d717f16f75640001e38Ted Kremenekint main() 3330660a898545416f0fea2d717f16f75640001e38Ted Kremenek{ 3430660a898545416f0fea2d717f16f75640001e38Ted Kremenek const char* s = "1234567890"; 3530660a898545416f0fea2d717f16f75640001e38Ted Kremenek test(random_access_iterator<const char*>(s+5), 5, random_access_iterator<const char*>(s)); 3630660a898545416f0fea2d717f16f75640001e38Ted Kremenek test(s+5, 5, s); 3730660a898545416f0fea2d717f16f75640001e38Ted Kremenek} 3830660a898545416f0fea2d717f16f75640001e38Ted Kremenek