Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::RResult< T > Class Template Reference

template<typename T>
class ROOT::Experimental::RResult< T >

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
 
RResultForward (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 ()
 
RResultoperator= (const RResult &other)=delete
 
RResultoperator= (RResult &&other)=default
 
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)
 
RErrorGetError ()
 
voidoperator new (std::size_t size)=delete
 
voidoperator new (std::size_t, void *)=delete
 
voidoperator new[] (std::size_t)=delete
 
voidoperator new[] (std::size_t, void *)=delete
 
RResultBaseoperator= (const RResultBase &other)=delete
 
RResultBaseoperator= (RResultBase &&other)=default
 
void Throw ()
 Throws an RException with fError.
 

Private Member Functions

void ThrowOnError ()
 

Private Attributes

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< RErrorfError
 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>

Inheritance diagram for ROOT::Experimental::RResult< T >:
[legend]

Constructor & Destructor Documentation

◆ RResult() [1/5]

template<typename T >
ROOT::Experimental::RResult< T >::RResult ( const T &  value)
inline

Definition at line 216 of file RError.hxx.

◆ RResult() [2/5]

template<typename T >
ROOT::Experimental::RResult< T >::RResult ( T &&  value)
inline

Definition at line 217 of file RError.hxx.

◆ RResult() [3/5]

template<typename T >
ROOT::Experimental::RResult< T >::RResult ( RError &&  error)
inline

Definition at line 218 of file RError.hxx.

◆ RResult() [4/5]

template<typename T >
ROOT::Experimental::RResult< T >::RResult ( const RResult< T > &  other)
delete

◆ RResult() [5/5]

template<typename T >
ROOT::Experimental::RResult< T >::RResult ( RResult< T > &&  other)
default

◆ ~RResult()

template<typename T >
ROOT::Experimental::RResult< T >::~RResult ( )
default

Member Function Documentation

◆ Forward()

template<typename T >
RResult & ROOT::Experimental::RResult< T >::Forward ( RError::RLocation &&  sourceLocation)
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.

◆ Inspect()

template<typename T >
const T & ROOT::Experimental::RResult< T >::Inspect ( )
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.

◆ operator bool()

template<typename T >
ROOT::Experimental::RResult< T >::operator bool ( )
inlineexplicit

Definition at line 253 of file RError.hxx.

◆ operator=() [1/2]

template<typename T >
RResult & ROOT::Experimental::RResult< T >::operator= ( const RResult< T > &  other)
delete

◆ operator=() [2/2]

template<typename T >
RResult & ROOT::Experimental::RResult< T >::operator= ( RResult< T > &&  other)
default

◆ ThrowOnError()

template<typename T >
void ROOT::Experimental::RResult< T >::ThrowOnError ( )
inlineprivate

Definition at line 202 of file RError.hxx.

◆ Unwrap()

template<typename T >
T ROOT::Experimental::RResult< T >::Unwrap ( )
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.

Member Data Documentation

◆ fValue

template<typename T >
T ROOT::Experimental::RResult< T >::fValue
private

The result value in case of successful execution.

Definition at line 199 of file RError.hxx.

  • core/foundation/v7/inc/ROOT/RError.hxx