24 static_assert(!std::is_abstract_v<T>);
27 QXmppPromise() : d(std::make_shared<QXmpp::Private::TaskData<T>>()) { }
38 template<
typename U,
typename TT = T>
39 requires(!std::is_void_v<T> && std::is_same_v<TT, U>)
40 void finish(U &&value)
43 Q_ASSERT(!d->finished);
45 d->result = std::move(value);
46 if (d->continuation) {
54 template<
typename U,
typename TT = T>
55 requires(!std::is_void_v<T> && std::is_constructible_v<TT, U> && !std::is_same_v<TT, U>)
56 void finish(U &&value)
58 Q_ASSERT(!d->finished);
60 d->result = T { std::move(value) };
61 if (d->continuation) {
68 template<
typename U = T>
69 requires(std::is_void_v<T>)
72 Q_ASSERT(!d->finished);
74 if (d->continuation) {
89 std::shared_ptr<QXmpp::Private::TaskData<T>> d;