aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-10-14 13:58:02 +0100
committerJonathan Wakely <jwakely@redhat.com>2021-10-14 22:19:38 +0100
commit373acac1c8f2d64409ccea6aea409a0e15e80a6a (patch)
tree03c50439903eadb18815e205c41e79c6a36b1ab6
parent04a9b8d2f38573d0527edeea9e4fd9b7dfdc7983 (diff)
downloadgcc-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.h6
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.