]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Optimize __directory_iterator_proxy for the common case
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 May 2016 13:09:22 +0000 (13:09 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 May 2016 13:09:22 +0000 (13:09 +0000)
* include/experimental/bits/fs_dir.h (__directory_iterator_proxy):
Overload operator* to move from rvalues.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236078 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/experimental/bits/fs_dir.h

index 20c55ff4d5e013e45d66af95ff5433da25101da5..7aaeefaa5180da43d5caed32abb1f2749f29bc39 100644 (file)
@@ -1,5 +1,8 @@
 2016-05-10  Jonathan Wakely  <jwakely@redhat.com>
 
+       * include/experimental/bits/fs_dir.h (__directory_iterator_proxy):
+       Overload operator* to move from rvalues.
+
        PR libstdc++/71036
        * src/filesystem/ops.cc (create_dir): Handle EEXIST from mkdir.
        * testsuite/experimental/filesystem/operations/create_directory.cc:
index 5fd41c2127fdaa2acdd353898d6ea7cd55a6ec98..011d3981622411eb4373c144b2b9f680f46843c4 100644 (file)
@@ -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;