8#include <QtCore/qtconfigmacros.h>
11#pragma qt_class(QOverload)
19auto qOverload(T functionPointer);
21auto qConstOverload(T memberFunctionPointer);
23auto qNonConstOverload(T memberFunctionPointer);
25template <
typename... Args>
26struct QNonConstOverload
28 template <
typename R,
typename T>
29 constexpr auto operator()(R (T::*ptr)(Args...))
const noexcept ->
decltype(ptr)
32 template <
typename R,
typename T>
33 static constexpr auto of(R (T::*ptr)(Args...))
noexcept ->
decltype(ptr)
37template <
typename... Args>
40 template <
typename R,
typename T>
41 constexpr auto operator()(R (T::*ptr)(Args...)
const)
const noexcept ->
decltype(ptr)
44 template <
typename R,
typename T>
45 static constexpr auto of(R (T::*ptr)(Args...)
const)
noexcept ->
decltype(ptr)
49template <
typename... Args>
58 constexpr auto operator()(R (*ptr)(Args...))
const noexcept ->
decltype(ptr)
62 static constexpr auto of(R (*ptr)(Args...))
noexcept ->
decltype(ptr)
72#define QT_VA_ARGS_CHOOSE(_1, _2, _3, _4, _5, _6, _7, _8, _9, N, ...) N
73#define QT_VA_ARGS_EXPAND(...) __VA_ARGS__
74#define QT_VA_ARGS_COUNT(...) QT_VA_ARGS_EXPAND(QT_VA_ARGS_CHOOSE(__VA_ARGS__, 9
, 8
, 7
, 6
, 5
, 4
, 3
, 2
, 1
, 0
))
75#define QT_OVERLOADED_MACRO_EXPAND(MACRO, ARGC) MACRO##_##ARGC
constexpr QOverload< Args... > qOverload
#define QT_OVERLOADED_MACRO_IMP(MACRO, ARGC)
constexpr QConstOverload< Args... > qConstOverload
#define QT_VA_ARGS_CHOOSE(_1, _2, _3, _4, _5, _6, _7, _8, _9, N,...)
#define QT_OVERLOADED_MACRO_EXPAND(MACRO, ARGC)
constexpr QNonConstOverload< Args... > qNonConstOverload
#define QT_VA_ARGS_EXPAND(...)
#define QT_VA_ARGS_COUNT(...)
constexpr auto operator()(R(T::*ptr)(Args...) const) const noexcept -> decltype(ptr)
static constexpr auto of(R(T::*ptr)(Args...) const) noexcept -> decltype(ptr)
static constexpr auto of(R(*ptr)(Args...)) noexcept -> decltype(ptr)
constexpr auto operator()(R(*ptr)(Args...)) const noexcept -> decltype(ptr)