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();