From 5d156a91853a7863d674ed35df87562e3a1eba0e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 18 Jun 2024 20:59:25 +0100 Subject: [PATCH] libstdc++: Add noexcept to some std::promise shared state internals Making the state ready for a std::promise only needs to move a unique_ptr, which cannot throw. Make its call operator noexcept. Similarly, making the state ready by storing an exception_ptr also can't throw, so make that call operator noexcept too. libstdc++-v3/ChangeLog: * include/std/future (_State_baseV2::_Setter): Add noexcept to call operator. (_State_baseV2::_Setter): Likewise. --- libstdc++-v3/include/std/future | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index 9e75ae98b13..d7be205af50 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -532,7 +532,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { static_assert(is_void<_Res>::value, "Only used for promise"); - typename promise<_Res>::_Ptr_type operator()() const + typename promise<_Res>::_Ptr_type operator()() const noexcept { return std::move(_M_promise->_M_storage); } promise<_Res>* _M_promise; @@ -545,7 +545,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct _Setter<_Res, __exception_ptr_tag> { // Used by std::promise to store an exception as the result. - typename promise<_Res>::_Ptr_type operator()() const + typename promise<_Res>::_Ptr_type operator()() const noexcept { _M_promise->_M_storage->_M_error = *_M_ex; return std::move(_M_promise->_M_storage);