[Bug libstdc++/71044] Optimize std::filesystem implementation
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Dec 12 16:14:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71044
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Wed Dec 12 16:13:49 2018
New Revision: 267057
URL: https://gcc.gnu.org/viewcvs?rev=267057&root=gcc&view=rev
Log:
Overload std::distance and std::advance for path::iterator
Although filesystem::path::iterator is only a bidirectional iterator,
the underlying sequence has random access iterators (specifically, raw
pointers). This means std::distance and std::advance can be implemented
more efficiently than the generic versions which apply ++ and --
repeatedly.
PR libstdc++/71044 (partial)
* include/bits/fs_path.h (__path_iter_distance, __path_iter_advance):
New friend functions to implement std::distance and std::advance more
efficiently.
(distance, advance): Add overloads for path::iterator.
* testsuite/27_io/filesystem/path/itr/components.cc: Test new
overload.
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/fs_path.h
trunk/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
More information about the Gcc-bugs
mailing list