aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-10-21 18:00:53 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-10-21 18:00:53 +0100
commite59e183f69dcfac77e043854ca2ef37120c6eda1 (patch)
tree75724c71242fc25f8435b62a08722d3ec27225c7
parent67a6cac73cffde2acfe155b6ad767632c71798fd (diff)
downloadgcc-e59e183f69dcfac77e043854ca2ef37120c6eda1.zip
gcc-e59e183f69dcfac77e043854ca2ef37120c6eda1.tar.gz
gcc-e59e183f69dcfac77e043854ca2ef37120c6eda1.tar.bz2
LWG2707 init filesystem::path from string_type&&
* include/experimental/bits/fs_path.h (path::path(string_type&&)) (path::operator=(string&&), path::assign(string_type&&)): Define construction and assignment from string_type rvalues (LWG 2707). From-SVN: r241416
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/experimental/bits/fs_path.h14
2 files changed, 20 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index fef7aa9..7fb055d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2016-10-21 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/experimental/bits/fs_path.h (path::path(string_type&&))
+ (path::operator=(string&&), path::assign(string_type&&)): Define
+ construction and assignment from string_type rvalues (LWG 2707).
+
2016-10-21 Eelis van der Weegen <eelis@eelis.net>
* include/bits/stl_algo.h (__gen_two_uniform_ints): Move logic out
diff --git a/libstdc++-v3/include/experimental/bits/fs_path.h b/libstdc++-v3/include/experimental/bits/fs_path.h
index dab8ef0..4d7291f 100644
--- a/libstdc++-v3/include/experimental/bits/fs_path.h
+++ b/libstdc++-v3/include/experimental/bits/fs_path.h
@@ -159,6 +159,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
__p.clear();
}
+ path(string_type&& __source)
+ : _M_pathname(std::move(__source))
+ { _M_split_cmpts(); }
+
template<typename _Source,
typename _Require = _Path<_Source>>
path(_Source const& __source)
@@ -193,6 +197,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
path& operator=(const path& __p) = default;
path& operator=(path&& __p) noexcept;
+ path& operator=(string_type&& __source);
+ path& assign(string_type&& __source);
template<typename _Source>
_Path<_Source>&
@@ -722,6 +728,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
}
inline path&
+ path::operator=(string_type&& __source)
+ { return *this = path(std::move(__source)); }
+
+ inline path&
+ path::assign(string_type&& __source)
+ { return *this = path(std::move(__source)); }
+
+ inline path&
path::operator+=(const path& __p)
{
return operator+=(__p.native());