diff --git a/tdutils/td/utils/Promise.h b/tdutils/td/utils/Promise.h index 7746bc0ae..8f9c5fe71 100644 --- a/tdutils/td/utils/Promise.h +++ b/tdutils/td/utils/Promise.h @@ -92,7 +92,7 @@ class LambdaPromise : public PromiseInterface { public: void set_value(ValueT &&value) override { CHECK(state_.get() == State::Ready); - func_(std::move(value)); + do_ok(std::move(value)); state_ = State::Complete; } @@ -128,6 +128,14 @@ class LambdaPromise : public PromiseInterface { std::enable_if_t>::value, void> do_error(Y &&status) { func_(Auto()); } + template + std::enable_if_t>::value, void> do_ok(ValueT &&value) { + func_(Result(std::move(value))); + } + template + std::enable_if_t>::value, void> do_ok(ValueT &&value) { + func_(std::move(value)); + } }; } // namespace detail