Template Class Result¶
Defined in File Result.hpp
Class Documentation¶
-
template<typename
T
, typenameE
= std::error_code>
classActs
::
Result
¶ Class which encapsulates either a valid result, or an error.
- Template Parameters
T
: The valid result valueE
: The error, defaults tostd::error_code
Public Functions
-
Result
() = delete¶ Default construction is disallowed.
-
template<typename
T2
, typename_E
= E, typename_T
= T, typename = std::enable_if_t<(!std::is_same_v<_T, _E> && !std::is_constructible_v<_T, _E> && !std::is_convertible_v<_T, _E> && !std::is_constructible_v<_E, _T> && !std::is_convertible_v<_E, _T> && !(std::is_convertible_v<T2, _T> && std::is_convertible_v<T2, _E>))>>Result
(T2 value) noexcept¶ Constructor from arbitrary value This constructor allows construction from any value.
This constructor is only enabled if T and E are unambiguous, meaning the cannot be implicitly converted and there is T cannot be constructed from E and vice-versa. This means that when this is invoked, the value can be propagated to the underlying variant, and the assignment will be correct, and error will be an error, and a value will be a value.
- Note
If T and E are ambigious, use the
success
andfailure
static factory methods.- Template Parameters
T2
: Type of the potential assignment
- Parameters
value
: The potential value, could be an actual valid value or an error.
-
E &
error
() & noexcept¶ Returns a reference to the error stored in the result.
- Note
If
res.ok()
this method will abort (noexcept)- Return
Reference to the error
-
E
error
() && noexcept¶ Returns the error by-value.
- Note
If
res.ok()
this method will abort (noexcept)- Return
The error
-
bool
ok
() const noexcept¶ Checks whether this result contains a valid value, and no error.
- Return
bool Whether result contains an error or not.
-
T &
operator*
() noexcept¶ Returns a reference into the variant to the valid value.
- Note
If
!res.ok()
, this method will abort (noexcept)- Return
Reference to value stored in the variant.
-
Result<T, E> &
operator=
(Result<T, E> &&other)¶ Move assignment is allowed.
- Return
The assigned instance
- Parameters
other
: The other result instance, rvalue reference
-
template<typename
T2
, typename_E
= E, typename_T
= T, typename = std::enable_if_t<(!std::is_same_v<_T, _E> && !std::is_constructible_v<_T, _E> && !std::is_convertible_v<_T, _E> && !std::is_constructible_v<_E, _T> && !std::is_convertible_v<_E, _T> && !(std::is_convertible_v<T2, _T> && std::is_convertible_v<T2, _E>))>>
Result<T, E> &operator=
(T2 value) noexcept¶ Assignment operator from arbitrary value This operator allows construction from any value.
The same rules as for the
Result(T2 value)
constructor apply.- Return
The assigned instance
- Template Parameters
T2
: Type of the potential assignment
- Parameters
value
: The potential value, could be an actual valid value or an error.