Logo ROOT  
Reference Guide
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 195 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. More...
 
const T & Inspect ()
 If the operation was successful, returns a const reference to the inner type. More...
 
 operator bool ()
 
RResultoperator= (const RResult &other)=delete
 
RResultoperator= (RResult &&other)=default
 
Unwrap ()
 If the operation was successful, returns the inner type by value. More...
 
- 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. More...
 

Private Member Functions

void ThrowOnError ()
 

Private Attributes

fValue
 The result value in case of successful execution. More...
 

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. More...
 
- Protected Member Functions inherited from ROOT::Experimental::Internal::RResultBase
 RResultBase ()=default
 
 RResultBase (RError &&error)
 
bool Check ()
 Used by the RResult<T> bool operator. More...
 
- Protected Attributes inherited from ROOT::Experimental::Internal::RResultBase
std::unique_ptr< RErrorfError
 This is the nullptr for an RResult representing success. More...
 
bool fIsChecked {false}
 Switches to true once the user of an RResult object checks the object status. More...
 

#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 215 of file RError.hxx.

◆ RResult() [2/5]

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

Definition at line 216 of file RError.hxx.

◆ RResult() [3/5]

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

Definition at line 217 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 227 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 235 of file RError.hxx.

◆ operator bool()

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

Definition at line 252 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 201 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 247 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 198 of file RError.hxx.


The documentation for this class was generated from the following file: