From: Samuel Just Date: Wed, 2 Jun 2021 02:52:27 +0000 (-0700) Subject: crimson/common/errorator: add futurize::apply X-Git-Tag: v17.1.0~1567^2~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7d49aaf4afaae8284876054c7ecb9d8aeba7719b;p=ceph.git crimson/common/errorator: add futurize::apply Signed-off-by: Samuel Just --- diff --git a/src/crimson/common/errorator.h b/src/crimson/common/errorator.h index e9685bc3a1fb..aa9f196cec9b 100644 --- a/src/crimson/common/errorator.h +++ b/src/crimson/common/errorator.h @@ -1211,6 +1211,18 @@ struct futurize>> { using type = typename errorator_type::template future; using value_type = seastar::internal::future_stored_type_t; + template + [[gnu::always_inline]] + static type apply(Func&& func, std::tuple&& args) noexcept { + try { + return std::apply( + std::forward(func), + std::forward>(args)); + } catch (...) { + return make_exception_future(std::current_exception()); + } + } + template [[gnu::always_inline]] static inline type invoke(Func&& func, FuncArgs&&... args) noexcept {