Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qoverload.h
Go to the documentation of this file.
1
// Copyright (C) 2022 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
QOVERLOAD_H
6
#
define
QOVERLOAD_H
7
8
#
include
<
QtCore
/
qtconfigmacros
.
h
>
9
#
include
<
QtCore
/
qtpreprocessorsupport
.
h
>
10
11
#
if
0
12
#
pragma
qt_class
(
QOverload
)
13
#
endif
14
15
QT_BEGIN_NAMESPACE
16
17
#
ifdef
Q_QDOC
18
// Just for documentation generation
19
template
<
typename
T>
20
auto
qOverload(T functionPointer);
21
template
<
typename
T>
22
auto
qConstOverload(T memberFunctionPointer);
23
template
<
typename
T>
24
auto
qNonConstOverload(T memberFunctionPointer);
25
#
else
26
template
<
typename
... Args>
27
struct
QNonConstOverload
28
{
29
template
<
typename
R,
typename
T>
30
constexpr
auto
operator()(R (T::*ptr)(Args...))
const
noexcept
->
decltype
(ptr)
31
{
return
ptr; }
32
33
template
<
typename
R,
typename
T>
34
static
constexpr
auto
of(R (T::*ptr)(Args...))
noexcept
->
decltype
(ptr)
35
{
return
ptr; }
36
};
37
38
template
<
typename
... Args>
39
struct
QConstOverload
40
{
41
template
<
typename
R,
typename
T>
42
constexpr
auto
operator
()(R (T::*ptr)(Args...)
const
)
const
noexcept
->
decltype
(ptr)
43
{
return
ptr; }
44
45
template
<
typename
R,
typename
T>
46
static
constexpr
auto
of
(R (T::*ptr)(Args...)
const
)
noexcept
->
decltype
(ptr)
47
{
return
ptr; }
48
};
49
50
template
<
typename
... Args>
51
struct
QOverload
:
QConstOverload
<Args...>,
QNonConstOverload
<
Args
...>
52
{
53
using
QConstOverload
<Args...>::of;
54
using
QConstOverload
<Args...>::operator();
55
using
QNonConstOverload
<
Args
...>::
of
;
56
using
QNonConstOverload
<
Args
...>::
operator
();
57
58
template
<
typename
R>
59
constexpr
auto
operator
()(R (*ptr)(Args...))
const
noexcept
->
decltype
(ptr)
60
{
return
ptr; }
61
62
template
<
typename
R>
63
static
constexpr
auto
of
(R (*ptr)(Args...))
noexcept
->
decltype
(ptr)
64
{
return
ptr; }
65
};
66
67
template
<
typename
...
Args
>
constexpr
inline
QOverload
<
Args
...>
qOverload
= {};
68
template
<
typename
...
Args
>
constexpr
inline
QConstOverload
<
Args
...>
qConstOverload
= {};
69
template
<
typename
...
Args
>
constexpr
inline
QNonConstOverload
<
Args
...>
qNonConstOverload
= {};
70
71
#
endif
// Q_QDOC
72
73
QT_END_NAMESPACE
74
75
#
endif
/* QOVERLOAD_H */
qOverload
constexpr QOverload< Args... > qOverload
Definition
qoverload.h:67
qConstOverload
constexpr QConstOverload< Args... > qConstOverload
Definition
qoverload.h:68
qNonConstOverload
constexpr QNonConstOverload< Args... > qNonConstOverload
Definition
qoverload.h:69
QConstOverload
Definition
qoverload.h:40
QConstOverload::operator()
constexpr auto operator()(R(T::*ptr)(Args...) const) const noexcept -> decltype(ptr)
Definition
qoverload.h:42
QConstOverload::of
static constexpr auto of(R(T::*ptr)(Args...) const) noexcept -> decltype(ptr)
Definition
qoverload.h:46
QOverload
Definition
qoverload.h:52
QOverload::of
static constexpr auto of(R(*ptr)(Args...)) noexcept -> decltype(ptr)
Definition
qoverload.h:63
QOverload::operator()
constexpr auto operator()(R(*ptr)(Args...)) const noexcept -> decltype(ptr)
Definition
qoverload.h:59
qtbase
src
corelib
global
qoverload.h
Generated on
for Qt by
1.18.0