diff --git a/AK/Error.h b/AK/Error.h index 4a04c69c805..b1c29b74d5a 100644 --- a/AK/Error.h +++ b/AK/Error.h @@ -21,6 +21,9 @@ namespace AK { class Error { public: + ALWAYS_INLINE Error(Error&&) = default; + ALWAYS_INLINE Error& operator=(Error&&) = default; + [[nodiscard]] static Error from_errno(int code) { return Error(code); } [[nodiscard]] static Error from_syscall(StringView syscall_name, int rc) { return Error(syscall_name, rc); } [[nodiscard]] static Error from_string_view(StringView string_literal) { return Error(string_literal); } @@ -79,6 +82,9 @@ private: { } + Error(Error const&) = default; + Error& operator=(Error const&) = default; + StringView m_string_literal; int m_code { 0 }; bool m_syscall { false }; @@ -100,23 +106,10 @@ public: } ALWAYS_INLINE ErrorOr(ErrorOr&&) = default; - ALWAYS_INLINE ErrorOr(ErrorOr const&) = default; ALWAYS_INLINE ErrorOr& operator=(ErrorOr&&) = default; - ALWAYS_INLINE ErrorOr& operator=(ErrorOr const&) = default; - template - ALWAYS_INLINE ErrorOr(ErrorOr const& value) - requires(IsConvertible) - : m_value_or_error(value.m_value_or_error.visit([](U const& v) -> Variant { return v; }, [](ErrorType const& error) -> Variant { return error; })) - { - } - - template - ALWAYS_INLINE ErrorOr(ErrorOr& value) - requires(IsConvertible) - : m_value_or_error(value.m_value_or_error.visit([](U& v) { return Variant(move(v)); }, [](ErrorType& error) { return Variant(move(error)); })) - { - } + ErrorOr(ErrorOr const&) = delete; + ErrorOr& operator=(ErrorOr const&) = delete; template ALWAYS_INLINE ErrorOr(ErrorOr&& value)