diff options
author | Vitaly Fanaskov <vitaly.fanaskov@qt.io> | 2020-03-31 16:24:29 +0200 |
---|---|---|
committer | Vitaly Fanaskov <vitaly.fanaskov@qt.io> | 2020-04-07 17:47:31 +0200 |
commit | 8365322d3de709e86fc6c3962472dcc8944fb0a3 (patch) | |
tree | 403d5fe6f26a754d7dc2ab25a822c3b8ab06e9cd | |
parent | 23be07c2d026ef92e7a826c6dbde23fd9d651321 (diff) |
StoredFunctionCall: simplify runFunctor implementation
Task-number: QTBUG-82383
Change-Id: Ib8e196106c80e8f3aba1ff7d0c8b76a547c648da
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
-rw-r--r-- | src/concurrent/qtconcurrentstoredfunctioncall.h | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/concurrent/qtconcurrentstoredfunctioncall.h b/src/concurrent/qtconcurrentstoredfunctioncall.h index f64648d7e9..b879e8af45 100644 --- a/src/concurrent/qtconcurrentstoredfunctioncall.h +++ b/src/concurrent/qtconcurrentstoredfunctioncall.h @@ -80,20 +80,13 @@ struct StoredFunctionCall : public RunFunctionTask<InvokeResultType<Function, Ar void runFunctor() override { - using Indexes = - std::make_index_sequence< - std::tuple_size<DecayedTuple<Function, Args...>>::value>; + constexpr auto invoke = &std::invoke<std::decay_t<Function>, + std::decay_t<Args>...>; - invoke(Indexes()); - } - - template <std::size_t... I> - void invoke(std::index_sequence<I...>) - { if constexpr (std::is_void_v<InvokeResultType<Function, Args...>>) - std::invoke(std::get<I>(std::move(data))...); + std::apply(invoke, std::move(data)); else - this->result = std::invoke(std::get<I>(std::move(data))...); + this->result = std::apply(invoke, std::move(data)); } DecayedTuple<Function, Args...> data; |