summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Fanaskov <vitaly.fanaskov@qt.io>2020-03-31 16:24:29 +0200
committerVitaly Fanaskov <vitaly.fanaskov@qt.io>2020-04-07 17:47:31 +0200
commit8365322d3de709e86fc6c3962472dcc8944fb0a3 (patch)
tree403d5fe6f26a754d7dc2ab25a822c3b8ab06e9cd
parent23be07c2d026ef92e7a826c6dbde23fd9d651321 (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.h15
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;