Commit 551124d5 by Jonathan Wakely Committed by Jonathan Wakely

Fix path::iterator post-increment and post-decrement

	* 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
parent 89b1e161
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.
......
......@@ -725,10 +725,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
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); }
......
......@@ -79,9 +79,28 @@ test02()
}
}
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();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment