36 [[nodiscard]]
static auto
37 wrap(
auto&& fn)
noexcept
40 [fn = std::forward<decltype(fn)>(fn)]<
typename... Args>(
SomeOutcome auto& outcome, Args&&... args)
mutable {
42 std::invoke(std::forward<
decltype(fn)>(fn), outcome, std::forward<Args>(args)...);
43 }
catch (std::exception
const& e) {
45 std::unexpected(
ExecutionError{fmt::format(
"{}", std::this_thread::get_id()), e.what()})
49 std::unexpected(
ExecutionError{fmt::format(
"{}", std::this_thread::get_id()),
"unknown"})
55 [[nodiscard]]
static auto
56 catchAndAssert(
auto&& fn)
noexcept
58 return [fn = std::forward<decltype(fn)>(fn)]
mutable {
60 std::invoke(std::forward<
decltype(fn)>(fn));
61 }
catch (std::exception
const& e) {
62 ASSERT(
false,
"Exception caught: {}", e.what());
64 ASSERT(
false,
"Unknown exception caught");