diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2021-10-14 13:58:02 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2021-10-14 22:19:38 +0100 |
commit | 373acac1c8f2d64409ccea6aea409a0e15e80a6a (patch) | |
tree | 03c50439903eadb18815e205c41e79c6a36b1ab6 | |
parent | 04a9b8d2f38573d0527edeea9e4fd9b7dfdc7983 (diff) | |
download | gcc-373acac1c8f2d64409ccea6aea409a0e15e80a6a.zip gcc-373acac1c8f2d64409ccea6aea409a0e15e80a6a.tar.gz gcc-373acac1c8f2d64409ccea6aea409a0e15e80a6a.tar.bz2 |
libstdc++: Make filesystem::path(path&&) always noexcept
Since r12-4065 std::basic_string is always nothrow-move-constructible,
so filesystem::path is too.
That also means that path::_S_convert(T) is noexcept when returning its
argument, because T is either a basci_string or basic_string_view, and
will be moved into the return value.
libstdc++-v3/ChangeLog:
* include/bits/fs_path.h (path(path&&)): Make unconditionally
noexcept.
(path::_S_convert(T)): Add condtional noexcept.
-rw-r--r-- | libstdc++-v3/include/bits/fs_path.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/libstdc++-v3/include/bits/fs_path.h b/libstdc++-v3/include/bits/fs_path.h index a63e4b9..d13fb12 100644 --- a/libstdc++-v3/include/bits/fs_path.h +++ b/libstdc++-v3/include/bits/fs_path.h @@ -316,10 +316,7 @@ namespace __detail path(const path& __p) = default; - path(path&& __p) -#if _GLIBCXX_USE_CXX11_ABI || _GLIBCXX_FULLY_DYNAMIC_STRING == 0 - noexcept -#endif + path(path&& __p) noexcept : _M_pathname(std::move(__p._M_pathname)), _M_cmpts(std::move(__p._M_cmpts)) { __p.clear(); } @@ -624,6 +621,7 @@ namespace __detail template<typename _Tp> static auto _S_convert(_Tp __str) + noexcept(is_same_v<typename _Tp::value_type, value_type>) { if constexpr (is_same_v<typename _Tp::value_type, value_type>) return __str; // No conversion needed. |