aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppPromise.h
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-01-28 17:08:05 +0100
committerLinus Jahn <lnj@kaidan.im>2023-01-28 17:19:35 +0100
commit8ac881a544e8fc7f85d78132610fce1b696d2025 (patch)
tree60742c9e76e7f404c96ba902b6e86fe90ce6e3c8 /src/base/QXmppPromise.h
parent5602c655ac32000e113dffc4aef2b3ed8d733c58 (diff)
downloadqxmpp-8ac881a544e8fc7f85d78132610fce1b696d2025.tar.gz
Task/Promise: Don't allow abstract types
Supporting abstract types only has little advantages and we might want to store the result by value later.
Diffstat (limited to 'src/base/QXmppPromise.h')
-rw-r--r--src/base/QXmppPromise.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/base/QXmppPromise.h b/src/base/QXmppPromise.h
index 09bc5bcb..91443c7f 100644
--- a/src/base/QXmppPromise.h
+++ b/src/base/QXmppPromise.h
@@ -21,6 +21,7 @@
template<typename T>
class QXmppPromise
{
+ static_assert(!std::is_abstract_v<T>);
public:
template<typename U = T, std::enable_if_t<std::is_void_v<U>> * = nullptr>
QXmppPromise()
@@ -43,7 +44,7 @@ public:
#ifdef QXMPP_DOC
void reportFinished(T &&value)
#else
- template<typename U, std::enable_if_t<!std::is_void_v<T> && std::is_base_of_v<T, U>> * = nullptr>
+ template<typename U, std::enable_if_t<!std::is_void_v<T> && std::is_same_v<T, U>> * = nullptr>
void finish(U &&value)
#endif
{
@@ -59,7 +60,7 @@ public:
}
/// \cond
- template<typename U, std::enable_if_t<!std::is_void_v<T> && std::is_constructible_v<T, U> && !std::is_base_of_v<T, U>> * = nullptr>
+ template<typename U, std::enable_if_t<!std::is_void_v<T> && std::is_constructible_v<T, U> && !std::is_same_v<T, U>> * = nullptr>
void finish(U &&value)
{
Q_ASSERT(!d.isFinished());