diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-10-21 18:00:53 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2016-10-21 18:00:53 +0100 |
commit | e59e183f69dcfac77e043854ca2ef37120c6eda1 (patch) | |
tree | 75724c71242fc25f8435b62a08722d3ec27225c7 | |
parent | 67a6cac73cffde2acfe155b6ad767632c71798fd (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/bits/fs_path.h | 14 |
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()); |