summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/future
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-11-14 03:44:53 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2016-11-14 03:44:53 +0000
commit9c52cc0189659e70155ab6ace4dc498bbf9d2142 (patch)
tree4cfc5ad0f9a7a0b995b8f9c7d2d96da6485c2570 /libstdc++-v3/include/std/future
parent881ca4c9de62eedb450a9c4d884318ec82a86d00 (diff)
Make std::future::share() noexcept (LWG 2556)
* include/std/future (future::share(), future<R&>::share()) (future<void>::share()): Add noexcept, as per LWG 2556. From-SVN: r242374
Diffstat (limited to 'libstdc++-v3/include/std/future')
-rw-r--r--libstdc++-v3/include/std/future14
1 files changed, 8 insertions, 6 deletions
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index cb42830aa9c..8ba13069510 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -778,7 +778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return std::move(this->_M_get_result()._M_value());
}
- shared_future<_Res> share();
+ shared_future<_Res> share() noexcept;
};
/// Partial specialization for future<R&>
@@ -821,7 +821,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return this->_M_get_result()._M_get();
}
- shared_future<_Res&> share();
+ shared_future<_Res&> share() noexcept;
};
/// Explicit specialization for future<void>
@@ -864,7 +864,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
this->_M_get_result();
}
- shared_future<void> share();
+ shared_future<void> share() noexcept;
};
@@ -1004,18 +1004,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: _M_state(std::move(__uf._M_state))
{ }
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 2556. Wide contract for future::share()
template<typename _Res>
inline shared_future<_Res>
- future<_Res>::share()
+ future<_Res>::share() noexcept
{ return shared_future<_Res>(std::move(*this)); }
template<typename _Res>
inline shared_future<_Res&>
- future<_Res&>::share()
+ future<_Res&>::share() noexcept
{ return shared_future<_Res&>(std::move(*this)); }
inline shared_future<void>
- future<void>::share()
+ future<void>::share() noexcept
{ return shared_future<void>(std::move(*this)); }
/// Primary template for promise