From 24357d248cabfb2969c950cc03301f56e89c7ecb Mon Sep 17 00:00:00 2001 From: Travis Downs Date: Fri, 3 Oct 2025 00:01:11 -0300 Subject: [PATCH] futurize::invoke: use std::invoke - Use std::invoke to call the passed function, rather than a direct call. This allows member function pointers and other callable types to be used. This is already the case in other calls like future_invoke. --- include/seastar/core/future.hh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/seastar/core/future.hh b/include/seastar/core/future.hh index 8b7b540cc7..a304afb52d 100644 --- a/include/seastar/core/future.hh +++ b/include/seastar/core/future.hh @@ -1994,14 +1994,14 @@ template template typename futurize::type futurize::invoke(Func&& func, FuncArgs&&... args) noexcept { try { - using ret_t = decltype(std::forward(func)(std::forward(args)...)); + using ret_t = std::invoke_result_t; if constexpr (std::is_void_v) { - std::forward(func)(std::forward(args)...); + std::invoke(std::forward(func), std::forward(args)...); return make_ready_future<>(); } else if constexpr (is_future::value) { - return std::forward(func)(std::forward(args)...); + return std::invoke(std::forward(func), std::forward(args)...); } else { - return convert(std::forward(func)(std::forward(args)...)); + return convert(std::invoke(std::forward(func), std::forward(args)...)); } } catch (...) { return current_exception_as_future();