From 90ef5866dd309d89fe5406968f97f248852931b5 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 30 May 2023 20:49:57 -0500 Subject: [PATCH] [ox] Add makeCatch function --- deps/ox/src/ox/std/new.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/deps/ox/src/ox/std/new.hpp b/deps/ox/src/ox/std/new.hpp index c8084ca8..369311f8 100644 --- a/deps/ox/src/ox/std/new.hpp +++ b/deps/ox/src/ox/std/new.hpp @@ -50,6 +50,22 @@ constexpr T *make(Args &&...args) noexcept { #endif } +template +[[nodiscard]] +constexpr Result makeCatch(Args &&...args) noexcept { +#ifdef __cpp_exceptions + try { + return new T(ox::forward(args)...); + } catch (const ox::Exception &ex) { + return ex.toError(); + } catch (...) { + return OxError(1, "Allocation or constructor failed"); + } +#else + return new T(ox::forward(args)...); +#endif +} + constexpr auto MallocaStackLimit = defines::UseStdLib ? 1024 : 0; /**