From 515e1860d3d1660e7d6f31a02f4b55d4e85f8514 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 25 May 2016 16:43:06 +0100 Subject: [PATCH] Optimize __directory_iterator_proxy for the common case Backport from mainline 2016-05-10 Jonathan Wakely * include/experimental/bits/fs_dir.h (__directory_iterator_proxy): Overload operator* to move from rvalues. From-SVN: r236716 --- libstdc++-v3/ChangeLog | 8 ++++++++ libstdc++-v3/include/experimental/fs_dir.h | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 459ef0a10b6e..af30e41dbae3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2016-05-25 Jonathan Wakely + + Backport from mainline + 2016-05-10 Jonathan Wakely + + * include/experimental/bits/fs_dir.h (__directory_iterator_proxy): + Overload operator* to move from rvalues. + 2016-05-25 Jonathan Wakely Backport from mainline diff --git a/libstdc++-v3/include/experimental/fs_dir.h b/libstdc++-v3/include/experimental/fs_dir.h index f25447310672..39b5aa2f9dc1 100644 --- a/libstdc++-v3/include/experimental/fs_dir.h +++ b/libstdc++-v3/include/experimental/fs_dir.h @@ -158,7 +158,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 struct __directory_iterator_proxy { - const directory_entry& operator*() const noexcept { return _M_entry; } + const directory_entry& operator*() const& noexcept { return _M_entry; } + + directory_entry operator*() && noexcept { return std::move(_M_entry); } private: friend class directory_iterator;