Opt< const T & > Class Template Reference

#include <optional.h>

Detailed Description

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

Specialization to store const 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 = const 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 (const T &value)
 
MAXON_IMPLICIT Opt (const T *valuePtr)
 
Bool HasValue () const
 
 operator Bool ()
 
 operator Bool () const
 
Result< const T & > GetValue () const
 
const T & GetValueOr (const T &defaultValue) const
 
GetValueOr (T &&defaultValue) const
 
const T & GetValueOrNull () const
 
const T * operator-> () const
 
const T & operator* () const
 
const T * ToPointer () const
 
 operator const T * ()
 

Private Member Functions

MAXON_ATTRIBUTE_FORCE_INLINE void CheckValue () const
 

Private Attributes

const T * _dataPtr
 

Member Typedef Documentation

◆ ValueType

using ValueType = const T&

◆ ResultFunctions

Constructor & Destructor Documentation

◆ Opt() [1/5]

Opt ( )

Default constructor. Creates an Opt 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< const T & > &  src)

Copy constructor.

◆ Opt() [4/5]

MAXON_IMPLICIT Opt ( const T &  value)

Constructs from const reference.

◆ Opt() [5/5]

MAXON_IMPLICIT Opt ( const T *  valuePtr)

Constructs from raw pointer.

Member Function Documentation

◆ operator=()

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

Copy assignment.

◆ 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<const T&> GetValue ( void  ) const

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

◆ GetValueOr() [1/2]

const T& GetValueOr ( const T &  defaultValue) const

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

◆ GetValueOr() [2/2]

T GetValueOr ( 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->()

const T* operator-> ( void  ) const

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

◆ operator*()

const T& operator* ( ) const

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

◆ ToPointer()

const T* ToPointer ( ) const

◆ operator const T *()

operator const T * ( )

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

◆ CheckValue()

MAXON_ATTRIBUTE_FORCE_INLINE void CheckValue ( ) const
private

Member Data Documentation

◆ _dataPtr

const T* _dataPtr
private