Skip to content

Commit 5900fb6

Browse files
committed
crimson/common/errorator: cleanup ErrorT::handler call
call error_t::handle without decalring handler and invoking it later on Signed-off-by: Matan Breizman <[email protected]>
1 parent 2342382 commit 5900fb6

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

src/crimson/common/errorator.h

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -930,10 +930,8 @@ struct errorator {
930930
template <typename ErrorT, EnableIf<ErrorT>...>
931931
decltype(auto) operator()(ErrorT&& e) {
932932
using decayed_t = std::decay_t<decltype(e)>;
933-
auto&& handler =
934-
decayed_t::error_t::handle(std::forward<ErrorFunc>(func));
935-
static_assert(std::is_invocable_v<decltype(handler), ErrorT>);
936-
return std::invoke(std::move(handler), std::forward<ErrorT>(e));
933+
return decayed_t::error_t::handle(std::forward<ErrorFunc>(func))
934+
(std::forward<ErrorT>(e));
937935
}
938936
};
939937

@@ -978,10 +976,9 @@ struct errorator {
978976
using decayed_t = std::decay_t<ErrorT>;
979977
static_assert(contains_once_v<decayed_t>,
980978
"discarding disallowed ErrorT");
981-
auto&& handler = decayed_t::error_t::handle([this] (auto&& error_v) {
979+
decayed_t::error_t::handle([this] (auto&& error_v) {
982980
ceph_abort_msgf("%s: %s", msg ? msg : "", error_v.message().c_str());
983-
});
984-
std::invoke(std::move(handler), std::forward<ErrorT>(raw_error));
981+
})(std::forward<ErrorT>(raw_error));
985982
return no_touch_error_marker{};
986983
}
987984
};
@@ -1350,10 +1347,9 @@ namespace ct_error {
13501347
pre_assert();
13511348
}
13521349
using decayed_t = std::decay_t<ErrorT>;
1353-
auto&& handler = decayed_t::error_t::handle([this] (auto&& error_v) {
1350+
decayed_t::error_t::handle([this] (auto&& error_v) {
13541351
ceph_abort_msgf("%s: %s", msg ? msg : "", error_v.message().c_str());
1355-
});
1356-
std::invoke(std::move(handler), std::forward<ErrorT>(raw_error));
1352+
})(std::forward<ErrorT>(raw_error));
13571353
return no_touch_error_marker{};
13581354
}
13591355
};
@@ -1364,9 +1360,8 @@ namespace ct_error {
13641360
error_func = std::forward<ErrorFunc>(error_func)
13651361
] (auto&& e) mutable -> decltype(auto) {
13661362
using decayed_t = std::decay_t<decltype(e)>;
1367-
auto&& handler =
1368-
decayed_t::error_t::handle(std::forward<ErrorFunc>(error_func));
1369-
return std::invoke(std::move(handler), std::forward<decltype(e)>(e));
1363+
return decayed_t::error_t::handle(std::forward<ErrorFunc>(error_func))
1364+
(std::forward<decltype(e)>(e));
13701365
};
13711366
};
13721367
}

0 commit comments

Comments
 (0)