diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-10-17 13:23:09 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2016-10-17 13:23:09 +0100 |
commit | a2284544a152bbe3c03408fa63acba7d9d55a9e5 (patch) | |
tree | 5a87be9c0fb7fae77d062a943aadd67e63a41963 | |
parent | 74cf9664e8a767a329131413de2271a4aae7488a (diff) | |
download | gcc-a2284544a152bbe3c03408fa63acba7d9d55a9e5.zip gcc-a2284544a152bbe3c03408fa63acba7d9d55a9e5.tar.gz gcc-a2284544a152bbe3c03408fa63acba7d9d55a9e5.tar.bz2 |
PR77998 Remove std::thread::_Invoker::result_type
PR libstdc++/77998
* include/std/future (__future_base::_Deferred_state)
(__future_base::_Async_state_impl): Use decltype to deduce return
type, instead of _Invoker::result_type.
* include/std/thread (thread::_Invoker::operator()): Likewise.
(thread::_Invoker::result_type): Remove.
From-SVN: r241236
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/future | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/std/thread | 9 |
3 files changed, 14 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ed57281..31280a3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 2016-10-17 Jonathan Wakely <jwakely@redhat.com> + PR libstdc++/77998 + * include/std/future (__future_base::_Deferred_state) + (__future_base::_Async_state_impl): Use decltype to deduce return + type, instead of _Invoker::result_type. + * include/std/thread (thread::_Invoker::operator()): Likewise. + (thread::_Invoker::result_type): Remove. + PR libstdc++/77987 * include/bits/unique_ptr.h (unique_ptr<T[], D>::reset<U>(U)): Copy value to pointer of the correct type to swap, to support conversions diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index 31a21f9..5542d49 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -561,10 +561,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class _Async_state_commonV2; #endif - template<typename _BoundFn, typename = typename _BoundFn::result_type> + template<typename _BoundFn, + typename _Res = decltype(std::declval<_BoundFn&>()())> class _Deferred_state; - template<typename _BoundFn, typename = typename _BoundFn::result_type> + template<typename _BoundFn, + typename _Res = decltype(std::declval<_BoundFn&>()())> class _Async_state_impl; template<typename _Signature> diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread index 7a3c407..576e577 100644 --- a/libstdc++-v3/include/std/thread +++ b/libstdc++-v3/include/std/thread @@ -235,14 +235,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using _Indices = typename _Build_index_tuple<tuple_size<_Tuple>::value>::__type; - using result_type - = decltype(std::declval<_Invoker>()._M_invoke(_Indices())); - - result_type + auto operator()() - noexcept(noexcept(std::declval<_Invoker>()._M_invoke(_Indices()))) + noexcept(noexcept(std::declval<_Invoker&>()._M_invoke(_Indices()))) + -> decltype(std::declval<_Invoker&>()._M_invoke(_Indices())) { return _M_invoke(_Indices()); } - }; // Alias for _Invoker<tuple<DECAY_COPY(_Tp)...>> |