The class is used as a return type for operations that can fail; wraps a value of type T or an RError.
RResult enforces checking whether it contains a valid value or an error state. If the RResult leaves the scope unchecked, it will throw an exception (due to ~RResultBase).
Definition at line 196 of file RError.hxx.
Public Member Functions | |
RResult (const RResult &other)=delete | |
RResult (const T &value) | |
RResult (RError &&error) | |
RResult (RResult &&other)=default | |
RResult (T &&value) | |
~RResult ()=default | |
RResult & | Forward (RError::RLocation &&sourceLocation) |
Used by R__FORWARD_RESULT in order to keep track of the stack trace in case of errors. | |
const T & | Inspect () |
If the operation was successful, returns a const reference to the inner type. | |
operator bool () | |
RResult & | operator= (const RResult &other)=delete |
RResult & | operator= (RResult &&other)=default |
T | Unwrap () |
If the operation was successful, returns the inner type by value. | |
Public Member Functions inherited from ROOT::Experimental::Internal::RResultBase | |
RResultBase (const RResultBase &other)=delete | |
RResultBase (RResultBase &&other)=default | |
~RResultBase () noexcept(false) | |
RError * | GetError () |
void * | operator new (std::size_t size)=delete |
void * | operator new (std::size_t, void *)=delete |
void * | operator new[] (std::size_t)=delete |
void * | operator new[] (std::size_t, void *)=delete |
RResultBase & | operator= (const RResultBase &other)=delete |
RResultBase & | operator= (RResultBase &&other)=default |
void | Throw () |
Throws an RException with fError. | |
Private Member Functions | |
void | ThrowOnError () |
Private Attributes | |
T | fValue |
The result value in case of successful execution. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ROOT::Experimental::Internal::RResultBase | |
static RError | ForwardError (RResultBase &&result, RError::RLocation &&sourceLocation) |
Used by R__FORWARD_ERROR in order to keep track of the stack trace. | |
Protected Member Functions inherited from ROOT::Experimental::Internal::RResultBase | |
RResultBase ()=default | |
RResultBase (RError &&error) | |
bool | Check () |
Used by the RResult<T> bool operator. | |
Protected Attributes inherited from ROOT::Experimental::Internal::RResultBase | |
std::unique_ptr< RError > | fError |
This is the nullptr for an RResult representing success. | |
bool | fIsChecked {false} |
Switches to true once the user of an RResult object checks the object status. | |
#include <ROOT/RError.hxx>
|
inline |
Definition at line 216 of file RError.hxx.
|
inline |
Definition at line 217 of file RError.hxx.
|
inline |
Definition at line 218 of file RError.hxx.
|
delete |
|
default |
|
default |
|
inline |
Used by R__FORWARD_RESULT in order to keep track of the stack trace in case of errors.
Definition at line 228 of file RError.hxx.
|
inline |
If the operation was successful, returns a const reference to the inner type.
If there was an error, Inspect() instead throws an exception.
Definition at line 236 of file RError.hxx.
|
inlineexplicit |
Definition at line 253 of file RError.hxx.
|
delete |
|
default |
|
inlineprivate |
Definition at line 202 of file RError.hxx.
|
inline |
If the operation was successful, returns the inner type by value.
For move-only types, Unwrap can only be called once, as it yields ownership of the inner value to the caller using std::move, potentially leaving the RResult in an unspecified state.
If there was an error, Unwrap() instead throws an exception.
Definition at line 248 of file RError.hxx.
|
private |
The result value in case of successful execution.
Definition at line 199 of file RError.hxx.