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>
42template <
class Sequence>
45 using Type = std::decay_t<decltype(*std::declval<Sequence>().begin())>;
48template <
class Iterator>
51 using Type = std::decay_t<decltype(*std::declval<Iterator>())>;
57template <
class T,
class MapFunctor>
60 static_assert(std::is_invocable_v<std::decay_t<MapFunctor>,
ArgumentType<T>>,
61 "It's not possible to invoke the function with passed argument.");
65template <
class T,
class MapFunctor>
73template <
class U,
class V>
79template <
class T,
class C,
class U>
85template <
class U,
class V>
91template <
typename R,
typename ...A>
97template <
class U,
class V>
103template <
class T,
class C,
class U>
109template<
class T,
class Enable =
void>
113inline constexpr bool hasCallOperator_v<T, std::void_t<
decltype(&T::operator())>> =
true;
115template<
class T,
class Enable =
void>
119inline constexpr bool isIterator_v<T, std::void_t<typename std::iterator_traits<T>::value_type>> =
122template <
class Callable,
class Sequence>
123using isInvocable = std::is_invocable<Callable, typename std::decay_t<Sequence>::value_type>;
125template <
class InitialValueType,
class ResultType>
127 std::is_convertible<InitialValueType, ResultType>,
130template<
class Callable,
class Enable =
void>
135template <
class Callable>
137 typename
std::enable_if_t<std::is_function_v<std::remove_pointer_t<std::decay_t<Callable>>>
138 || std::is_member_function_pointer_v<std::decay_t<Callable>>>>
143template <
class Callable>
145 typename
std::enable_if_t<!std::is_function_v<std::remove_pointer_t<std::decay_t<Callable>>>
146 && hasCallOperator_v<std::decay_t<Callable>>>>
148 using type = std::decay_t<typename QtPrivate::ArgResolver<Callable>::First>;
153template <
class InputSequence,
class MapFunctor>
156 static_assert(std::is_same_v<
typename InputSequence::value_type,
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>
Combined button and popup list for selecting options.
ReduceOption
This enum specifies the order of which results from the map or filter function are passed to the redu...
std::is_invocable< Callable, typename std::decay_t< Sequence >::value_type > isInvocable
constexpr bool hasCallOperator_v
constexpr bool isInitialValueCompatible_v
typename MapResult< T, MapFunctor >::Type MapResultType
std::conditional_t< FunctionPointer< std::decay_t< Func > >::ArgumentCount==-1, ZeroArgFunctor< std::decay_t< Func > >, FunctionPointer< std::decay_t< Func > > > Callable
constexpr bool isIterator_v
typename Argument< T >::Type ArgumentType
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
std::invoke_result_t< std::decay_t< MapFunctor >, ArgumentType< T > > Type
void operator()(C &c, U &&u) const
void operator()(C &c, const U &u) const
typename QtPrivate::ReduceResultType< std::decay_t< Callable > >::ResultType type
std::decay_t< typename QtPrivate::ArgResolver< Callable >::First > type
typename std::tuple_element< 0, std::tuple< A... > >::type ResultType