@@ -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