From 7d49aaf4afaae8284876054c7ecb9d8aeba7719b Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 1 Jun 2021 19:52:27 -0700 Subject: [PATCH] crimson/common/errorator: add futurize::apply Signed-off-by: Samuel Just --- src/crimson/common/errorator.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/crimson/common/errorator.h b/src/crimson/common/errorator.h index e9685bc3a1fb4..aa9f196cec9b2 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 { -- 2.39.5