diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/result.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/util/result.h b/src/util/result.h index b99995c7e5..11fe89af25 100644 --- a/src/util/result.h +++ b/src/util/result.h @@ -39,6 +39,13 @@ private: std::variant<bilingual_str, T> m_variant; + //! Disallow operator= to avoid confusion in the future when the Result + //! class gains support for richer error reporting, and callers should have + //! ability to set a new result value without clearing existing error + //! messages. + Result& operator=(const Result&) = delete; + Result& operator=(Result&&) = delete; + template <typename FT> friend bilingual_str ErrorString(const Result<FT>& result); @@ -46,6 +53,9 @@ public: Result() : m_variant{std::in_place_index_t<1>{}, std::monostate{}} {} // constructor for void Result(T obj) : m_variant{std::in_place_index_t<1>{}, std::move(obj)} {} Result(Error error) : m_variant{std::in_place_index_t<0>{}, std::move(error.message)} {} + Result(const Result&) = default; + Result(Result&&) = default; + ~Result() = default; //! std::optional methods, so functions returning optional<T> can change to //! return Result<T> with minimal changes to existing code, and vice versa. |