Opt< T & > Class Template Reference

#include <optional.h>

Detailed Description

template<typename T>
class maxon::Opt< T & >

Specialization to store lvalue references, which only uses a single pointer internally. This can be used to treat pointers that may be null as optional references for more descriptive interfaces.

Public Types

using ValueType = T &
 
template<typename SUPER >
using ResultFunctions = maxon::details::ResultOptFunctions< SUPER >
 

Public Member Functions

 Opt ()
 
MAXON_IMPLICIT Opt (NO_VALUE_TYPE)
 
 Opt (const Opt &src)
 
Optoperator= (const Opt &src)
 
MAXON_IMPLICIT Opt (T &value)
 
Optoperator= (T &value)
 
MAXON_IMPLICIT Opt (T *valuePtr)
 
Optoperator= (T *valuePtr)
 
Bool HasValue () const
 
 operator Bool ()
 
 operator Bool () const
 
Result< T & > GetValue () const
 
T & GetValueOr (T &defaultValue) const
 
const T & GetValueOr (const T &defaultValue) const
 
const T & GetValueOrNull () const
 
const T * operator-> () const
 
T * operator-> ()
 
const T & operator* () const
 
T & operator* ()
 
T * ToPointer ()
 
const T * ToPointer () const
 
 operator T* ()
 
 operator const T * ()
 

Private Member Functions

MAXON_ATTRIBUTE_FORCE_INLINE void CheckValue () const
 

Private Attributes

T * _dataPtr
 

Member Typedef Documentation

◆ ValueType

using ValueType = T&

◆ ResultFunctions

Constructor & Destructor Documentation

◆ Opt() [1/5]

Opt ( )

Default constructor. Creates an Optional with no value.

◆ Opt() [2/5]

Explicit construction with NO_VALUE. Has the same effect as the default constructor.

◆ Opt() [3/5]

Opt ( const Opt< T & > &  src)

Copy constructor.

◆ Opt() [4/5]

MAXON_IMPLICIT Opt ( T &  value)

Constructs from reference.

◆ Opt() [5/5]

MAXON_IMPLICIT Opt ( T *  valuePtr)

Constructs from raw pointer.

Member Function Documentation

◆ operator=() [1/3]

Opt& operator= ( const Opt< T & > &  src)

Copy assignment.

◆ operator=() [2/3]

Opt& operator= ( T &  value)

Assign from reference.

◆ operator=() [3/3]

Opt& operator= ( T *  valuePtr)

Assign from raw pointer.

◆ HasValue()

Bool HasValue ( ) const

Returns true if this object contains a value.

◆ operator Bool() [1/2]

operator Bool ( )
explicit

◆ operator Bool() [2/2]

operator Bool ( ) const
explicit

◆ GetValue()

Result<T&> GetValue ( void  ) const

Returns the contained value, or IllegalState error if object contained no value.

◆ GetValueOr() [1/2]

T& GetValueOr ( T &  defaultValue) const

Returns the contained value, or a default value if object contained no value.

◆ GetValueOr() [2/2]

const T& GetValueOr ( const T &  defaultValue) const

Returns the contained value, or a default value if object contained no value.

◆ GetValueOrNull()

const T& GetValueOrNull ( ) const

Returns the contained value, or a null value if object contained no value.

◆ operator->() [1/2]

const T* operator-> ( void  ) const

Returns a pointer to the contained value. Results in undefined behavior if object contained no value.

◆ operator->() [2/2]

T* operator-> ( void  )

◆ operator*() [1/2]

const T& operator* ( ) const

Returns a reference to the contained value. Results in undefined behavior if object contained no value.

◆ operator*() [2/2]

T& operator* ( )

◆ ToPointer() [1/2]

T* ToPointer ( )

◆ ToPointer() [2/2]

const T* ToPointer ( ) const

◆ operator T*()

operator T* ( )

Converts the optional reference to a raw pointer. This is supported for interoperability with legacy code.

◆ operator const T *()

operator const T * ( )

◆ CheckValue()

MAXON_ATTRIBUTE_FORCE_INLINE void CheckValue ( ) const
private

Member Data Documentation

◆ _dataPtr

T* _dataPtr
private