ResultMemT< T > Class Template Reference

#include <resultbase.h>

Detailed Description

template<typename T>
class maxon::ResultMemT< T >

ResultMemT can be used as return type of functions which normally return a T, but might fail only due to an out-of-memory situation and indicate this by the default value of T. The typical use-case is for pointers or strong/unique references. You can't use ResultMemT when the default value of T shall be a legal return value of the function, in that case you have to use Result.

See also
ResultMem
ResultPtr

Public Types

using IsResult = std::true_type
 
using ValueType = T
 

Public Member Functions

 ResultMemT ()
 
MAXON_IMPLICIT ResultMemT (ERROR_FAILED)
 
MAXON_IMPLICIT ResultMemT (const T &value)
 
MAXON_IMPLICIT ResultMemT (T &&value)
 
MAXON_IMPLICIT ResultMemT (ERROR_OK)
 
MAXON_IMPLICIT ResultMemT (ResultOk< void >)
 
 ResultMemT (const ResultMemT &)=default
 
ResultMemT & operator= (const ResultMemT &)=default
 
 ResultMemT (ResultMemT &&)=default
 
ResultMemT & operator= (ResultMemT &&)=default
 
template<typename T2 , typename = typename std::enable_if<STD_IS_REPLACEMENT(constructible, T, T2*) && STD_IS_REPLACEMENT(pointer, T)>::type>
MAXON_IMPLICIT ResultMemT (const ResultMemT< T2 * > &result)
 
template<typename T2 , typename = typename std::enable_if<STD_IS_REPLACEMENT(constructible, T, T2*) && STD_IS_REPLACEMENT(pointer, T)>::type>
MAXON_IMPLICIT ResultMemT (ResultMemT< T2 * > &&result)
 
template<typename T2 , typename = typename std::enable_if<STD_IS_REPLACEMENT(constructible, T, T2) && STD_IS_REPLACEMENT(pointer, T) == STD_IS_REPLACEMENT(pointer, T2)>::type>
MAXON_IMPLICIT ResultMemT (const ResultMemT< T2 > &result)
 
template<typename T2 , typename = typename std::enable_if<STD_IS_REPLACEMENT(constructible, T, T2) && STD_IS_REPLACEMENT(pointer, T) == STD_IS_REPLACEMENT(pointer, T2)>::type>
MAXON_IMPLICIT ResultMemT (ResultMemT< T2 > &&result)
 
template<typename T2 >
MAXON_IMPLICIT ResultMemT (const ResultRef< T2 > &result)
 
Bool operator== (ERROR_OK ok) const
 
Bool operator== (ERROR_FAILED failed) const
 
const T & GetValue () const &
 
const T & UncheckedGetValue () const &
 
void IfErrIgnore (const char *) const
 
 MAXON_MEMBER_ACCESSORS (T, GetValue)
 
 MAXON_MEMBER_ACCESSORS (T, UncheckedGetValue)
 
 MAXON_MEMBER_ACCESSORS (T, GetValueOrDefault)
 
const T & GetValueOr (const T &defaultValue) const
 
T GetValueOr (T &&defaultValue) const
 
const T & GetValueOrDefault () const &
 
T GetPointer () const
 

Static Public Attributes

static constexpr Bool HAS_ERROR
 

Private Member Functions

Bool IsOK (const std::false_type *) const
 
Bool IsOK (const void *) const
 

Private Attributes

T _value
 

Member Typedef Documentation

◆ IsResult

using IsResult = std::true_type

◆ ValueType

using ValueType = T

Constructor & Destructor Documentation

◆ ResultMemT() [1/13]

◆ ResultMemT() [2/13]

◆ ResultMemT() [3/13]

MAXON_IMPLICIT ResultMemT ( const T &  value)

◆ ResultMemT() [4/13]

MAXON_IMPLICIT ResultMemT ( T &&  value)

◆ ResultMemT() [5/13]

◆ ResultMemT() [6/13]

◆ ResultMemT() [7/13]

ResultMemT ( const ResultMemT< T > &  )
default

◆ ResultMemT() [8/13]

ResultMemT ( ResultMemT< T > &&  )
default

◆ ResultMemT() [9/13]

MAXON_IMPLICIT ResultMemT ( const ResultMemT< T2 * > &  result)

◆ ResultMemT() [10/13]

MAXON_IMPLICIT ResultMemT ( ResultMemT< T2 * > &&  result)

◆ ResultMemT() [11/13]

MAXON_IMPLICIT ResultMemT ( const ResultMemT< T2 > &  result)

◆ ResultMemT() [12/13]

MAXON_IMPLICIT ResultMemT ( ResultMemT< T2 > &&  result)

◆ ResultMemT() [13/13]

MAXON_IMPLICIT ResultMemT ( const ResultRef< T2 > &  result)

Member Function Documentation

◆ operator=() [1/2]

ResultMemT& operator= ( const ResultMemT< T > &  )
default

◆ operator=() [2/2]

ResultMemT& operator= ( ResultMemT< T > &&  )
default

◆ operator==() [1/2]

Bool operator== ( ERROR_OK  ok) const

==(ERROR_OK)

==(ERROR_OK)

◆ operator==() [2/2]

Bool operator== ( ERROR_FAILED  failed) const

==(ERROR_FAILED)

==(ERROR_FAILED)

◆ GetValue()

const T& GetValue ( ) const &

Returns the result value. This function must not be called when there is no value because an out-of-memory error occurred.

Returns
Result value.

◆ UncheckedGetValue()

const T& UncheckedGetValue ( ) const &

Returns the result value, or a default value in case of an out-of-memory error.

Returns
Result value (default value in case of an error).

◆ IfErrIgnore()

void IfErrIgnore ( const char *  ) const

Allows to skip a returned error and to continue execution.

◆ MAXON_MEMBER_ACCESSORS() [1/3]

MAXON_MEMBER_ACCESSORS ( T  ,
GetValue   
)

◆ MAXON_MEMBER_ACCESSORS() [2/3]

MAXON_MEMBER_ACCESSORS ( T  ,
UncheckedGetValue   
)

◆ MAXON_MEMBER_ACCESSORS() [3/3]

MAXON_MEMBER_ACCESSORS ( T  ,
GetValueOrDefault   
)

◆ GetValueOr() [1/2]

const T& GetValueOr ( const T &  defaultValue) const

Returns the contained value, or a default value in case of an error.

Parameters
[in]defaultValueDefault value to be used in case of an error.
Returns
Result value (or default in case of an error).

◆ GetValueOr() [2/2]

T GetValueOr ( T &&  defaultValue) const

Returns the contained value, or a default value in case of an error.

Parameters
[in]defaultValueDefault value to be used in case of an error.
Returns
Result value (or default in case of an error).

◆ GetValueOrDefault()

const T& GetValueOrDefault ( ) const &

Returns the contained value, or a default value in case of an error.

Returns
Result value (or default in case of an error).

◆ GetPointer()

T GetPointer ( ) const

Returns the result value. This function is only supported if T is a pointer type.

Returns
Result value.

◆ IsOK() [1/2]

Bool IsOK ( const std::false_type *  ) const
private

◆ IsOK() [2/2]

Bool IsOK ( const void *  ) const
private

Member Data Documentation

◆ HAS_ERROR

constexpr Bool HAS_ERROR
staticconstexpr

◆ _value

T _value
private