4#ifndef QTCONCURRENT_FUNCTIONWRAPPERS_H
5#define QTCONCURRENT_FUNCTIONWRAPPERS_H
7#include <QtConcurrent/qtconcurrentcompilertest.h>
8#include <QtConcurrent/qtconcurrentreducekernel.h>
9#include <QtCore/qfuture.h>
13#if !defined(QT_NO_CONCURRENT) || defined(Q_QDOC)
21 template <
class C,
class U>
24 return c.push_back(u);
27 template <
class C,
class U>
30 return c.push_back(u);
36template <
class T,
class Enable =
void>
57template <
class T,
class MapFunctor>
61 "It's not possible to invoke the function with passed argument.");
65template <
class T,
class MapFunctor>
66using MapResultType =
typename MapResult<T, MapFunctor>::Type;
71struct ReduceResultType;
73template <
class U,
class V>
74struct ReduceResultType<
void(*)(U&,V)>
79template <
class T,
class C,
class U>
80struct ReduceResultType<T(C::*)(U)>
85template <
class U,
class V>
91template <
typename R,
typename ...A>
92struct ReduceResultType<R(*)(A...)>
94 using ResultType =
typename std::tuple_element<0,
std::tuple<A...>>::type;
97template <
class U,
class V>
98struct ReduceResultType<
void(*)(U&,V)
noexcept>
100 using ResultType = U;
103template <
class T,
class C,
class U>
104struct ReduceResultType<T(C::*)(U)
noexcept>
106 using ResultType = C;
109template<
class T,
class Enable =
void>
115template<
class T,
class Enable =
void>
130template<
class Callable,
class Enable =
void>
153template <
class InputSequence,
class MapFunctor>
158 "Couldn't deduce the output sequence type, you must specify it explicitly.");
162#ifndef QT_NO_TEMPLATE_TEMPLATE_PARAMETERS
164template <
template <
typename...>
class InputSequence,
typename MapFunctor,
typename ...T>
constexpr bool hasCallOperator_v
constexpr bool isInitialValueCompatible_v
constexpr bool isIterator_v
void operator()(C &c, U &&u) const
void operator()(C &c, const U &u) const