diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/post.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/post.pass.cpp --- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/post.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/post.pass.cpp @@ -16,10 +16,20 @@ #include #include +#include #include "test_macros.h" #include "test_iterators.h" +#if TEST_STD_VER > 17 +template +void test_single_pass(It i, It x) { + std::move_iterator r(std::move(i)); + r++; + assert(std::move(r).base() == x); +} +#endif + template void test(It i, It x) @@ -33,7 +43,11 @@ int main(int, char**) { char s[] = "123"; +#if TEST_STD_VER > 17 + test_single_pass(input_iterator(s), input_iterator(s + 1)); +#else test(input_iterator(s), input_iterator(s+1)); +#endif test(forward_iterator(s), forward_iterator(s+1)); test(bidirectional_iterator(s), bidirectional_iterator(s+1)); test(random_access_iterator(s), random_access_iterator(s+1)); diff --git a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp --- a/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp +++ b/libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp @@ -35,6 +35,8 @@ typedef std::ptrdiff_t difference_type; typedef ValueType* pointer; typedef Reference reference; + + Reference operator*() const; }; template