From fa8de09edc9ec4e6d171df80f746174a0ec58afb Mon Sep 17 00:00:00 2001 From: MacroFake Date: Tue, 12 Jul 2022 19:28:03 +0200 Subject: Prepare BResult for non-copyable types --- src/util/result.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/util/result.h b/src/util/result.h index dcf5edaa5b..2f586a4c9b 100644 --- a/src/util/result.h +++ b/src/util/result.h @@ -6,6 +6,7 @@ #define BITCOIN_UTIL_RESULT_H #include + #include /* @@ -18,9 +19,9 @@ private: std::variant m_variant; public: - BResult() : m_variant(Untranslated("")) {} - BResult(const T& _obj) : m_variant(_obj) {} - BResult(const bilingual_str& error) : m_variant(error) {} + BResult() : m_variant{Untranslated("")} {} + BResult(T obj) : m_variant{std::move(obj)} {} + BResult(bilingual_str error) : m_variant{std::move(error)} {} /* Whether the function succeeded or not */ bool HasRes() const { return std::holds_alternative(m_variant); } @@ -30,6 +31,11 @@ public: assert(HasRes()); return std::get(m_variant); } + T ReleaseObj() + { + assert(HasRes()); + return std::move(std::get(m_variant)); + } /* In case of failure, the error cause */ const bilingual_str& GetError() const { -- cgit v1.2.3