Allow copy elision in path concatenation
Summary:
Just port of libstdc++'s fix to libc++ fs: https://github.com/gcc-mirror/gcc/commit/e6ac4004fe49d785c63bf87aec4b095b5ce1d19f
Author of fix: Jonathan Wakely
Reviewers: EricWF, mclow.lists
Reviewed By: EricWF
Subscribers: smeenai, christof, cfe-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D46593
llvm-svn: 331910
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: b89605db0133ac8231304da31f7b4ac9d68a1984
diff --git a/include/experimental/filesystem b/include/experimental/filesystem
index a851824..f29e23e 100644
--- a/include/experimental/filesystem
+++ b/include/experimental/filesystem
@@ -1140,7 +1140,9 @@
inline _LIBCPP_INLINE_VISIBILITY
path operator/(const path& __lhs, const path& __rhs) {
- return path(__lhs) /= __rhs;
+ path __result(__lhs);
+ __result /= __rhs;
+ return __result;
}
template <class _Source>