File Result.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
-
template<typename T, typename E = std::error_code>
class Result - #include <Acts/Utilities/Result.hpp>
Class which encapsulates either a valid result, or an error.
- tparam T
The valid result value
- tparam E
The error, defaults to
std::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>))>>
inline 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.
-
inline E &error() & noexcept
Returns a reference to the error stored in the result.
Note
If
res.ok()
this method will abort (noexcept)- Returns
Reference to the error
-
inline E error() && noexcept
Returns the error by-value.
Note
If
res.ok()
this method will abort (noexcept)- Returns
The error
-
inline bool ok() const noexcept
Checks whether this result contains a valid value, and no error.
- Returns
bool Whether result contains an error or not.
-
inline T &operator*() noexcept
Returns a reference into the variant to the valid value.
Note
If
!res.ok()
, this method will abort (noexcept)- Returns
Reference to value stored in the variant.
-
inline Result<T, E> &operator=(Result<T, E> &&other)
Move assignment is allowed.
- Parameters
other – The other result instance, rvalue reference
- Returns
The assigned instance
-
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>))>>
inline 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.- Template Parameters
T2 – Type of the potential assignment
- Parameters
value – The potential value, could be an actual valid value or an error.
- Returns
The assigned instance
-
inline T &value() &
Retrieves the valid value from the result object.
Note
This is the lvalue version, returns a reference to the value
- Returns
The valid value as a reference
-
inline T value() &&
Retrieves the valid value from the result object.
Note
This is the rvalue version, returns the value by-value and moves out of the variant.
- Returns
The valid value by value, moved out of the variant.
Public Static Functions
Private Functions
-
template<typename E>
class Result<void, E> - #include <Acts/Utilities/Result.hpp>
Template specialization for the void case.
This specialization handles the case where there is no actual return value, but an error might be returned. Returning the error directly would make handling different from other functions using the
Result<T, E>
mechanism.Result<void, E>
does not have the dereference operator, and value methods. The staticsuccess
factory does not accept a value.Note
To ease usage, this
Result<void, E>
is default constructible in the ok state, whereasResult<T, E>
is not.- tparam E
The type of the error
Public Functions
-
Result() = default
Default constructor which initializes the result in the ok state.
-
inline Result(Result<void, E> &&other)
Move constructor.
- Parameters
other – The other result object, rvalue ref
-
template<typename E2>
inline Result(E2 error) noexcept Constructor from error.
This implicitly requires E2 to be convertible to E.
- Template Parameters
E2 – The type of the actual error
- Parameters
error – The instance of the actual error
-
inline E &error() & noexcept
Returns a reference to the error stored in the result.
Note
If
res.ok()
this method will abort (noexcept)- Returns
Reference to the error
-
inline E error() && noexcept
Returns the error by-value.
Note
If
res.ok()
this method will abort (noexcept)- Returns
Reference to the error
-
inline bool ok() const noexcept
Checks whether this result is in the ok state, and no error.
- Returns
bool Whether result contains an error or not.
-
Result<void, E> &operator=(const Result<void, E> &other) = default
The (self) assignment operator is deleted.
-
template<typename T, typename E = std::error_code>