aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-10-17 13:23:09 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-10-17 13:23:09 +0100
commita2284544a152bbe3c03408fa63acba7d9d55a9e5 (patch)
tree5a87be9c0fb7fae77d062a943aadd67e63a41963
parent74cf9664e8a767a329131413de2271a4aae7488a (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--libstdc++-v3/include/std/future6
-rw-r--r--libstdc++-v3/include/std/thread9
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)...>>