libstdc++: Add noexcept to some std::promise shared state internals

Making the state ready for a std::promise<void> 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<R, void>): Add
	noexcept to call operator.
	(_State_baseV2::_Setter<R, __exception_ptr_tag>): Likewise.
This commit is contained in:
Jonathan Wakely 2024-06-18 20:59:25 +01:00
parent 9651d6005f
commit 5d156a9185
No known key found for this signature in database

View file

@ -532,7 +532,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
static_assert(is_void<_Res>::value, "Only used for promise<void>");
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);