* include/experimental/bits/fs_path.h (path::iterator++(int))
(path::iterator--(int)): Fix for paths with only one component.
* testsuite/experimental/filesystem/path/itr/traversal.cc: Test
post-increment and post-decrement.
From-SVN: r253896
2017-10-19 Jonathan Wakely <jwakely@redhat.com>
+ * include/experimental/bits/fs_path.h (path::iterator++(int))
+ (path::iterator--(int)): Fix for paths with only one component.
+ * testsuite/experimental/filesystem/path/itr/traversal.cc: Test
+ post-increment and post-decrement.
+
* doc/xml/manual/status_cxx2017.xml: Update references to C++17
section numbers.
pointer operator->() const { return std::__addressof(**this); }
iterator& operator++();
- iterator operator++(int) { auto __tmp = *this; ++_M_cur; return __tmp; }
+ iterator operator++(int) { auto __tmp = *this; ++*this; return __tmp; }
iterator& operator--();
- iterator operator--(int) { auto __tmp = *this; --_M_cur; return __tmp; }
+ iterator operator--(int) { auto __tmp = *this; --*this; return __tmp; }
friend bool operator==(const iterator& __lhs, const iterator& __rhs)
{ return __lhs._M_equals(__rhs); }
}
}
+void
+test03()
+{
+ path paths[] = { "single", "multiple/elements" };
+ for (const path& p : paths)
+ for (auto iter = p.begin(); iter != p.end(); ++iter)
+ {
+ auto iter2 = iter;
+ ++iter;
+ iter2++;
+ VERIFY( iter2 == iter );
+ auto iter3 = iter;
+ --iter3;
+ iter2--;
+ VERIFY( iter2 == iter3 );
+ }
+}
+
int
main()
{
test01();
test02();
+ test03();
}